• User

    Left join

    Salve a tutti, spiego in sintesi il problema:
    tabella 1 "utente"

    IDUtente
    Nome
    RIDRegione

    tabella 2 "regione"

    IDRgione
    Regione

    Ho utilizzato la seguente query:
    SELECT r.Regione, count( u.RIDRegione ) AS totale
    FROM utente AS u LEFT JOIN regione AS r ON u.RIDRegione = r.IDRegione
    WHERE u.IDUtente >1
    GROUP BY RIDRegione
    ORDER BY totale DESC

    Vorrei visualizzare tutte le regioni, con accanto il numero totale di relativi iscritti. Sono riuscito a visualizzare solo le regioni che hanno occorrenza nella tabella "utente", ma non riesco a visualizzare le restanti regioni con accanto 0 come risultato.
    Potete aiutarmi?
    Grazie in anticipo


  • ModSenior

    Ciao Huck,

    devi invertire le tabelle nelle query, facendo from regione e dopo un join con gli utenti.


  • User

    @Thedarkita said:

    Ciao Huck,

    devi invertire le tabelle nelle query, facendo from regione e dopo un join con gli utenti.

    Intanto grazie,
    funziona, ma ne visualizza solo una di quelle non legate alla tabella utenti, la prima che trova e poi basta, sai come mai?


  • User

    A posto, la query è questa:

    SELECT r.Regione AS reg, count( u.RIDRegione ) AS totale
    FROM utente AS u
    RIGHT JOIN regione AS r ON u.RIDRegione = r.IDRegione
    WHERE r.Regione != 'Non definita'
    GROUP BY Regione
    ORDER BY totale DESC

    Grazie del tuo aiuto