Jag försöker göra en SQL fråga i access enl följande tanke. går det? Jag har förutsatt att du har kundregister, artikelregister och orderregister med orderrader, men för enkelhets skull uteslutit orderregistret och använt orderraderna direkt. Så här kan en SQL-sats i MSAccess se ut: Det är nog enklare att lägga till en tabell och göra en join.Matematisk term i Access
Om kund status är 1 (session) och artikelgrupp är minde än 6 så hämta Pris och dividera priset med 0,75.
Annars
Om kund status är 2 (session) och artikelgrupp är minde än 6 så hämta Pris och dividera priset med 0,85.
Annars
Om kund status är 1 (session) och artikelgrupp är MER än 6 så hämta Pris och dividera priset med 0,45.
Annars
Om kund status är 2 (session) och artikelgrupp är MER än 6 så hämta Pris och dividera priset med 0,35.
Kundstatus är en sessionsvariabel
artikelgrupp är långt heltal
Pris är Dubbelt tal
Kan någon vänlig själ hjälpa mig att strukturera denna SQL fråga
Mvh
PeterSv: Matematisk term i Access
SELECT Kunder.kundstatus, Kunder.namn, Artiklar.artikelgrupp, Artiklar.text, Artiklar.pris, [pris]*(([artikelgrupp]>6)*([kundstatus]=1)*0.75+([artikelgrupp]<6)*([kundstatus]=2)*0.85+([artikelgrupp]<6)*([kundstatus]=1)*0.45+([artikelgrupp]>6)*([kundstatus]=2)*0.35) AS rabattpris
FROM Artiklar INNER JOIN (Kunder INNER JOIN Orderrader ON Kunder.kundid = Orderrader.kundid) ON Artiklar.artikelid = Orderrader.artikelid;
Uttryck som ([artikelgrupp]>6) blir ger ett boolskt resultat, 1 eller 0, och kan därför multipliceras med din faktor. Eftersom alla fallen utesluter varandra kommer uttrycket ([artikelgrupp]>6)*([kundstatus]=1)*0.75+([artikelgrupp]<6)*([kundstatus]=2)*0.85+([artikelgrupp]<6)*([kundstatus]=1)*0.45+([artikelgrupp]>6)*([kundstatus]=2)*0.35 att innehålla högst en parentes som ger värdet ett (du har uteslutit artikelgrupp = 6, så i så fall blir alla false). Summan av parenteser multiplicerade (jag antog att du ville multiplicera, inte dividera) med faktorer (0.75, o.85 etc) kommer därför att bli 0 eller en av faktorerna, vilket multipliceras med priset för att ge ett rabattpris.
Denna SQL-sats kan även konstrueras i frågeguiden. Växla till designläge så får du se hur det ser ut.Sv: Matematisk term i Access
Tabell: Faktor
Fält: FaktorStatus
Fält: FaktorMinGroup
Fält: FaktorMaxGroup
Fält: FaktorValue
-------------------------------------------------------
FaktorStatus, FaktorMinGroup, FaktorMaxGroup
-------------------------------------------------------
1, Null, 6
2, Null, 6
1, 6, Null
2, 6, Null
SELECT TabellNamn.*, Faktorer.FaktorValue
FROM TabellNamn LEFT JOIN
Faktor ON (TabellNamn.Status = Faktor.FaktorStatus AND ((Faktor.FaktorMinGroup Is Null OR Faktor.FaktorMinGroup < TabellNamn.artikelgrupp) AND (Faktor.FaktorMaxGroup Is Null OR Faktor.FaktorMaxGroup > TabellNamn.artikelgrupp)))