Hej Låter som du behöver en outer join: Tack för svaret men inger förändring samma resultat. Ah tänkte inte på ditt WHERE-villkor... Hej Tomas! Hej!Join mellan två tabeller.
Har detta för att plocka ut samtliga namn och tider ur två tabeller.
access databas, asp sida.
Set rs = Conn.Execute ("SELECT Närvaro.namn, (Närvaro.Per2) as iSum1, Sum(Tider.Boktime) as iSum FROM Närvaro LEFT JOIN Tider ON Närvaro.Namn=Tider.Namn WHERE Tider.Avd = '" & sAvd & "' And Tider.Datum = '" & sDate & "' GROUP BY Närvaro.Namn, Närvaro.per2")
Men får enbart ut om det finns samma namn i tabellen Tider jag vill visa alla namn i som finns tabellen Närvaro samt visa närvarotid minus Boktime från tabellen Tider, nu visas inte dom namn som inte finns i tabellen tider.
Finns det något sätt att lösa detta tro jag kan inte komma på hur.
TobbeSv: Join mellan två tabeller.
SELECT Närvaro.Namn, Närvaro.Per2 AS iSum1, ISNULL(Sum(Tider.BokTime), 0) AS iSum
FROM Närvaro
LEFT OUTER JOIN Tider ON Närvaro.Namn = Tider.Namn
GROUP BY Närvaro.Namn, Närvaro.Per2
Sv:Join mellan två tabeller.
ISNULL(Sum(..... funkar inte vad kan det bero på tro.
I tabell Närvaro finns ett ex antal poster med Namn och per0 t.o.m Per4 dom vill jag visa samt i tabellen Tider visa summan av Boktime per namn ett vist datum.
I tabellen tider kan det förekomma att ett eller flera namn inte finns just detta datum, men då vill jag att det ska visas i alla fall som ex boktime = 0.
Men får inte till det som jag vill.
TobbeSv: Join mellan två tabeller.
Alla referenser till tabellen Tider i WHERE-villkoret måste flyttas och skrivas om så de passar i JOIN-villkoret istället
SELECT Närvaro.Namn, Närvaro.Per2 AS iSum1, ISNULL(Sum(Tider.BokTime), 0) AS iSum
FROM Närvaro
LEFT OUTER JOIN Tider ON Närvaro.Namn = Tider.Namn AND Tider.Avd = '...' AND Tider.Datum = '...'
GROUP BY Närvaro.Namn, Närvaro.Per2
Sv:Join mellan två tabeller.
Nu får jag 500 - Internal server error. om jag ändrar till AND istället för Where.
TobbeSv: Join mellan två tabeller.
Set rs = Conn.Execute ("SELECT Närvaro.Namn, Närvaro.Per2 AS iSum1, Sum(Tider.BokTime) AS iSum FROM Närvaro LEFT OUTER JOIN Tider ON Närvaro.Avd = Tider.Avd Where Tider.Avd ='" & sAvd & "' AND Tider.Datum = '" & sDate & "' GROUP BY Närvaro.Namn, Närvaro.Per2")
Funkar med ditt senaste förslag när jag ändrar till Where men då sammanställs alla tider och då blir det fel.
Namn0: Adam
Bokadtid0: 1150
Närvarotid0: 750
Tid kvar att boka0: -400
Namn1: Fredrik
Bokadtid1: 1150
Närvarotid1: 700
Tid kvar att boka1: -450
Namn2: Joackim
Bokadtid2: 1150
Närvarotid2: 750
Tid kvar att boka2: -400
Namn3: Stefan
Bokadtid3: 1150
Närvarotid3: 750
Tid kvar att boka3: -400
Namn4: Thomas
Bokadtid4: 1150
Närvarotid4: 400
Tid kvar att boka4: -750
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Kör jag denna kod blir det så här, men då får jag inte med all namn från Närvaro.
Set rs = Conn.Execute ("SELECT Tider.namn, Sum(Tider.Boktime) as iSum, (Nnärvaro.Per2) as iSum1 FROM Tider LEFT OUTER JOIN Närvaro ON Tider.Namn=Närvaro.Namn Where Tider.datum='" & sDate & "' and Tider.Avd = '" & sAvd & "' GROUP BY Tider.Namn, Närvaro.per2")
Namn0: Adam
Bokadtid0: 400
Närvarotid0: 750
Tid kvar att boka0: 350
Namn1: Joackim
Bokadtid1: 750
Närvarotid1: 750
Tid kvar att boka1: 0
Tobbe