Hej! Kollade lite snabbt. Borde det inte räcka att lägga till vinsten i det första alternativet? Tack för ditt svar! Ta hela första frågan och joina med hela andra måste ju rimligtvis funka? Det är nog rätt väg att gå. Men jag vet inte riktigt hur man löser det kodmässigt i min ASP-fil. Du gör det i själva sql:en. Aaa... mäktigt. Det var just det med att "döpa" en fråga till T1 osv. som jag inte kunde sedan tidigare. Nu kommer det säkert fungera galant. Tack för hjälpen!Behöver hjälp med SQL fråga
Jag programerar ASP med VBScript mot en Accessdatabas och skulle behöva hjälp med följande fråga.
Jag har två tabeller som ser ut enligt följande:
T_ORDER
OrderID
KundID
PersonalID
OrderDatum
Status
TB
T_ORDERDETALJ
OrderID
ArtikelID
Pris
Jag vill presentera en tabell där man ser PersonalID, Vinst (TB*Pris) samt Antal (av ett visst artikelID)
Med följande SQL frågor får jag ut ett svar som visar PersonalID, Vinst samt en annan som visar PersonalID och Antal. Frågan är hur jag med SQL/VBScript sammanfogar dessa till en tabell.
SELECT T_ORDER.PersonalID, COUNT(T_ORDERDETALJ.ArtikelID) AS Antal
FROM T_ORDER INNER JOIN T_ORDERDETALJ ON T_ORDER.OrderID = T_ORDERDETALJ.OrderID
WHERE T_ORDER.OrderDatum="2007-11-08" AND (T_ORDERDETALJ.ArtikelID = 100001 OR (T_ORDERDETALJ.ArtikelID BETWEEN 200001 AND 200005))
GROUP BY T_ORDER.PersonalID;
SELECT SUM(T_ORDER.TB*T_ORDERDETALJ.Pris) AS Vinst, T_ORDER.PersonalID
FROM T_ORDER INNER JOIN T_ORDERDETALJ ON T_ORDER.OrderID = T_ORDERDETALJ.OrderID
WHERE T_ORDER.OrderDatum="2007-11-08"
GROUP BY T_ORDER.PersonalID;
Detta ger resultaten:
PersonalID - Antal
1009 - 4
1010 - 3
1001 - 5
PersonalID - Antal
1009 - 3000
1010 - 31500
1001 - 5300
Mitt önskelmål är att få tabellen enligt följande:
PersonalID - Antal - Vinst
1009 - 4 - 3000
1010 - 3 - 31500
1001 - 5 - 5300
Någon som kan hjälpa mig?
Sv: Behöver hjälp med SQL fråga
SELECT T_ORDER.PersonalID, COUNT(T_ORDERDETALJ.ArtikelID) AS Antal, SUM(T_ORDER.TB*T_ORDERDETALJ.Pris) AS Vinst
Eller har jag missat något problem här?
/JohanSv:Behöver hjälp med SQL fråga
Du har dock missat ett lite problem och det är att endast vissa artikelID ska räknas för att få fram antal, medans samtliga räknas för att se vinsten.
/ChristianSv: Behöver hjälp med SQL fråga
Sv:Behöver hjälp med SQL fråga
/ChristianSv: Behöver hjälp med SQL fråga
SELECT PersonalID, Antal, Vinst FROM
(SELECT T_ORDER.PersonalID, COUNT(T_ORDERDETALJ.ArtikelID) AS Antal
FROM T_ORDER INNER JOIN T_ORDERDETALJ ON T_ORDER.OrderID = T_ORDERDETALJ.OrderID
WHERE T_ORDER.OrderDatum="2007-11-08" AND (T_ORDERDETALJ.ArtikelID = 100001 OR (T_ORDERDETALJ.ArtikelID BETWEEN 200001 AND 200005))
GROUP BY T_ORDER.PersonalID) T1
RIGHT JOIN
(SELECT SUM(T_ORDER.TB*T_ORDERDETALJ.Pris) AS Vinst, T_ORDER.PersonalID
FROM T_ORDER INNER JOIN T_ORDERDETALJ ON T_ORDER.OrderID = T_ORDERDETALJ.OrderID
WHERE T_ORDER.OrderDatum="2007-11-08"
GROUP BY T_ORDER.PersonalID) T2
ON T1.PersonalID = T2.PersonalIDSv:Behöver hjälp med SQL fråga
/Christian