Jag har gett mig ut på för djupt vatten och skulle uppskatta om någon ville hjälpa mig att få ordning på nedanstående fråga som körs i ASP på en Access-databas.
Jag har tre tabeller:
pers_personnel
pers_categoryrelations
pers_categories
pers_personnel innehåller information om användare och hänger ihop med pers_categoryrelations genom "userid". Den senare tabellen innehåller som namnet antyder information om vilka kategorier som användaren tillhör och hänger i sin tur ihop med pers_categories genom "categoryid".
Jag försöker lista alla kategorier i en tabell och även visa hur många personer som tillhör varje kategori. LarsG visade mig tidigare hur man åstadkommer detta med två tabeller som hänger samman med ett id, men jag blir lite förvirrad när det kommer in en tredje tabell i bilden. Detta är vad jag försökt med. Frågan ger resultat, men utelämnar kategorier som inte har några användare så jag antar att det är "JOIN:arna" som är fel. Jag vill alltså även visa de kategorier som ännu inte innehåller några användare.
SELECT COUNT(p.userid) AS perscount, c.categoryid, c.name, c.description
FROM (pers_personnel AS p LEFT OUTER JOIN pers_categoryrelations AS r ON p.userid = r.userid)
LEFT OUTER JOIN pers_categories AS c ON r.categoryid = c.categoryid
GROUP BY c.categoryid, c.name, c.description
Då du har en left join så innebär det att alla poster från pers_personnel kommer med. Du kan antingen byta till en right join
SELECT COUNT(p.userid) AS perscount, c.categoryid, c.name, c.description
FROM (pers_personnel AS p right OUTER JOIN pers_categoryrelations AS r ON p.userid = r.userid)
right OUTER JOIN pers_categories AS c ON r.categoryid = c.categoryid
GROUP BY c.categoryid, c.name, c.description
eller så kan du byta ordning så att du har pers_categories som första tabell i from.