Ik heb hier (als voorbeeld) even 2 tabellen:
Tabelnaam: groep
id: int(11) PRI
groep: char(64)
Tabelnaam: users
id: int(11) PRI
user: char(64)
groep: int(11) PRI
Nou wijs ik dus aan de users een groep toe. De groep(int) in de tabel users wijst naar de id van de tabel groep. Ik heb een aantal groepen, echter zijn sommigen ook leeg (zitten nog geen users in).
Nou wil ik de volgende query uitvoeren:
Deze query checkt hoeveel users er in een bepaalde groep zitten en sorteer deze op aantal.
Dit werkt allemaal goed, alleen neemt deze niet de lege groepen mee (logisch, want die zitten ook niet bij users). Nou heb ik al allerlei verschillende queries geprobeerd, maar ik kom er maar niet uit.
Is er een mogelijkheid om lege groepen mee te nemen in deze query?
Graag geen PHP code, o.i.d., ik wil dit puur in SQL doen.
Voorbeeld van wat ik heb geprobeerd:
Tabelnaam: groep
id: int(11) PRI
groep: char(64)
Tabelnaam: users
id: int(11) PRI
user: char(64)
groep: int(11) PRI
Nou wijs ik dus aan de users een groep toe. De groep(int) in de tabel users wijst naar de id van de tabel groep. Ik heb een aantal groepen, echter zijn sommigen ook leeg (zitten nog geen users in).
Nou wil ik de volgende query uitvoeren:
SQL:
1
| SELECT COUNT(a.id) AS aantal, b.groep FROM users a, groep b WHERE a.groep = b.id GROUP BY groep ORDER BY aantal DESC; |
Deze query checkt hoeveel users er in een bepaalde groep zitten en sorteer deze op aantal.
Dit werkt allemaal goed, alleen neemt deze niet de lege groepen mee (logisch, want die zitten ook niet bij users). Nou heb ik al allerlei verschillende queries geprobeerd, maar ik kom er maar niet uit.
Is er een mogelijkheid om lege groepen mee te nemen in deze query?
Graag geen PHP code, o.i.d., ik wil dit puur in SQL doen.
Voorbeeld van wat ik heb geprobeerd:
SQL:
1
| SELECT b.groep, COUNT(a.id) AS aantal FROM users a, groep b WHERE a.groep IN (SELECT id FROM groep;) GROUP BY a.groep ORDER BY aantal DESC; |