Jag har två tabeller. tbl1 och tbl2 Du borde kunna göra en subquery som ser nått sånt här... Stort tack för din snabba hjälp Johan!SQL fråga om Count, Join och Group by som jag inte fixar
Fältet fID är detsamma i bägge tabellerna. tbl2 är en underkategori till tbl1.
<code>
SELECT tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed, COUNT(tbl2.mID) AS Total
FROM tbl1
LEFT JOIN tbl2
ON (tbl1.fID = tbl2.fID)
GROUP BY tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed</code>
Denna fråga ger mig alla
1, Rubrik, pField, isActive, isClosed, och antal mID i tbl2
Allt grupperat som det ska efter tbl1.fID
Problemet är att innehållet i tbl2.mID också har tbl2.isActive med värdet 0 eller 1
Jag lyckas inte få till frågan så att jag kan få fram
1, Rubrik, pField, isActive, isClosed, och antal mID i tbl2, SAMT antal tbl2.isActive = '0'
Denna fråga ger visserligen svar på detta:
<code>SELECT tbl1.fID, tbl1.rubrik, pField,tbl1.isActive, tbl1.isClosed, COUNT(tbl2.mID) AS Total
FROM tbl1
JOIN tbl2
ON (tbl1.fID = tbl2.fID AND tbl2.isActive='0')
GROUP BY tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed</code>
Men om där inte finns några tbl2.isActive = 0 så får jag ingen träff alls.
Kan man på något listigt sätt få med motsvarande:
<code>SELECT COUNT(tbl2.mID) AS mTotal FROM tbl2 where isActive='0'</code>
i den första frågan så att den ger samma svar SAMT antalet tbl2.isActive = '0'?
Jag vore tacksam om någon kunde komma med förslag på hur detta skulle kunna gå till. Själv lyckas jag bara skapa en massa felmeddelanden ;-)
Jag kör detta på Windows 2000, IIS och SQL Server 2000.Sv: SQL fråga om Count, Join och Group by som jag inte fixar
SELECT tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed, COUNT(tbl2.mID) AS Total (SELECT COUNT(tbl2.mID) AS mTotal FROM tbl2 where fID = tbl1.fID AND isActive='0') AS Antal
FROM tbl1
LEFT JOIN tbl2
ON (tbl1.fID = tbl2.fID)
GROUP BY tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed
/JohanSv: SQL fråga om Count, Join och Group by som jag inte fixar
<code>
SELECT tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed, COUNT(tbl2.mID) AS Total, (SELECT COUNT(tbl2.mID) AS mTotal FROM tbl2 where fID = tbl1.fID AND isActive='0') AS Antal
FROM tbl1
LEFT JOIN tbl2
ON (tbl1.fID = tbl2.fID)
GROUP BY tbl1.fID, tbl1.rubrik, pField, tbl1.isActive, tbl1.isClosed
</code>
Allt som saknades i ditt förslag var ett komma efter <code>AS Total</code>