Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Mysql - Left Join

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    24

    Mysql - 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

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    prova con RIGHT JOIN

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    24
    già fatto, mi da lo stesso risultato.

    Grazie comunque

  4. #4
    Originariamente inviato da huck
    già fatto, mi da lo stesso risultato.

    Grazie comunque
    qualcosa non torna nella struttura.

    Nella tabella "utente" hai l'id della regione e quindi si presume tu abbia solo le regioni relazionate. Nella tabella "regione" dovresti avere tutte le regioni, quindi dovresti contare gli id_regione della tabella "utenti" raggruppando per regioni della tabella "regioni" selezionate con un right join.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Questi argomenti vanno nella sezione Database, ti sposto li

  6. #6
    finché metti questa condizione

    WHERE u.IDUtente >1

    le regioni a ZERO non ti compariranno mai, non credi?

    e comunque, usa RIGHT JOIN


  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    24
    Grazie, hai ragione, ora funziona, ma ne visualizza solo una a 0; credo perchè sia l'unica che trova prima di finire le relazioni con risultato. come posso fare a fargliele visualizzare tutte?

    Grazie ancora

  8. #8
    non so assolutamente in quale maniera tu le visualizzi...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    24
    SELECT r.Regione AS reg, count(u.RIDRegione) AS totale FROM utente AS u RIGHT JOIN regione AS r ON u.RIDRegione = r.IDRegione GROUP BY `RIDRegione` ORDER BY totale DESC

    la query è questa, ma con risultato a 0, cioè non trovata nella tabella utente, visualizza solo la prima occorrenza trovata, in questo caso la Valle d'Aosta

    Piemonte 3
    Lombardia 2
    Campania 1
    Liguria 1
    Valle d'Aosta 0

    le altre regioni non trovate non me le considera

  10. #10
    il risultato lo vedi attraverso un programma che hai fatto tu?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.