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
    

Anmelden zum Antworten