Ja... knivig rubrik! Hade lite svårt att formulera en bra sökfråga på detta ämne så jag kunde inte hitta något som stämde överens med det jag ville (även om det säkerligen finns).
Det jag vill göra är följande:
Jag har 2 tabeller (tabell1 och tabell2) som ser ut som följande:
tabell1
Id Datum RegistreradTid Anställd
tabell2
Id Tabell1Id Område Antal
Det jag vill göra är att summera all "RegistreradTid" i tabell1 där "Anställd" är X och alla "Antal" i tabell2 där "Tabell1Id" matchar de som hittas i frågan som ställs mot "tabell1" SAMT endast innehåller "Område" Y
Det jag har problem med i den JOIN jag har knåpat ihop är att den summerar inte de fälten i tabell1 som inte har några matchar på "Område" = Y... om ni förstår vad jag menar.
Är det JOIN som jag bör jobba med eller bör jag köra med någon/några subquerys? Tips och exempel mottages varmt
select sum(registreradtid),
(select sum(antal)
from tabell2
where tabell2.tabell1id = tabell1.id
and tabell2.område = 'Y')
from tabell1
where anställd = 'X'
Jag har pillat om det en aning och får det inte riktigt att fungera. Summeringen av x.pUnits blir 0. Så här ser min kod ut nu
SELECT SUM(b.pCalculatedTime) as c,SUM(b.pRegisteredTime) as r,
(SELECT SUM(x.pUnits) AS p
FROM BBACEmpPes AS x
WHERE x.pBBACId = b.pId
AND x.pPeNumId IN (SELECT q.pPeNum FROM BBACPeNums AS q
WHERE q.pWorkArea = " & _Area & " AND q.pTimeType = 'A')) AS Units,
COUNT(b.pId) AS ct
FROM BBAC AS b
WHERE b.pCalculatedTime <> 0 AND b.pWorkArea = " & _Area & "
AND b.pTimeType = 'A'
AND b.pEmployee = " & emp.EmployeeId & "
AND b.pYear = " & _Date.Year & "
AND b.pWeek = " & _Date.WeekNum
Njae, jag kan inte se något direkt fel. Du får försöka dela upp det i mindre bitar och testa dessa var för sig. T.ex. avd får du för resultat av
select x.pUnits
from BBACEmpPes AS x
where x.pPeNumId in (select q.pPeNum
from BBACPeNums AS q
where q.pWorkArea = " & _Area & "
and q.pTimeType = 'A')
och om du inte får något resultat av den får du testa subselecten i den frågan separat.