SQL frage
-
Hallo,
ich hab ne tabelle panel_applies und ne tabelle panel_users
panel_applies sieht z.T. so aus:
ID userID ...
panel_users sieht so aus:
ID name level guildname ...
jetzt will ich für jeden eintrag in panel_users die anzahl der applies wissen und es danach sortieren. Im Moment mach ich das folgendermaßen
SELECT * , COUNT( panel_applies.ID ) AS applies FROM panel_applies, panel_users WHERE panel_users.ID = panel_applies.userID GROUP BY panel_applies.userID ORDER BY `applies` DESC
Das funktioniert auch wunderbar, nur leider werden die user die gar keine applies haben nicht gelistet...
Habt ihr eine Idee wie ich meine Abfrage umschreiben kann damit auch die user die gar keine applies in panel_applies eingetragen haben mit selektiert werden?mfg tobZel
-
Mit einem LEFT JOIN in etwa so oder so ähnlich
SELECT COUNT( pa.ID ) AS applies -- , weitere Spalten FROM panel_users AS pu -- LEFT JOIN um auch user ohne applies anzuzeigen LEFT JOIN panel_applies AS pa ON pu.ID = pa.userID GROUP BY pa.userID ORDER BY `applies` DESC