Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    MySQL - Contare numero di righe raggruppate con group by

    Salve.

    Io ho due tabelle, una con una lista di nomi (es. Pippo1, Pippo2, Pippo3, Pippo4) ed una dove ho degli id con associato uno dei nomi della lista di prima (es. ID1 Pippo1, ID2 Pippo3, ID3 Pippo1, ID4 Pippo2, ID5 Pippo1).

    Io vorrei restituire la lista dei nomi della prima tabella con il numero di id associati per ogni nome (nell'esempio di prima Pippo1 è usato da ID1, ID3 e ID5, quindi ritornere Pippo1 (3). Pippo2(1) Pippo3(1) Pippo4(0)).

    Avevo pensato di farla con :
    codice:
    select categoria from gallery_category as g1 JOIN gallery as g2 ON g1.categoria=g2.category group by g1.categoria
    solo che non ho idea di come potrei contare quanti valori raggruppa con il "group by". é possibile o devo usare un'altra query?

  2. #2
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    usa la funzione count()

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    eh ma il count() fà la conta per tutte le righe. A me servono dei "count" per ogni nome della prima tabella..

  4. #4
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    ahem no...

    se fai

    codice:
    select categoria, count(*)
    ...
    group by categoria
    la count ti conta proprio quante occorrenze di categoria son state "raggruppate".

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm già, e ti ringrazio per l'aiuto

    Il problema è che se non ho occorrenze non mi ritorna il valore, invece vorrei che mi tornasse 0 (come nell'esempio, Pippo4 0)

  6. #6
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Con la left join te la cavi.

    codice:
    select 
        g1.categoria, count(*) 
    from 
        gallery_category as g1 left JOIN 
        gallery as g2 
           ON g1.categoria=g2.category 
    group by g1.categoria
    Ovviamente G1 contiene tutti i valori singoli (i vari pippon), G2 contiene i valori multipli con associato l'id della categoria ad altri campi (nell'esempio di prima sarebbe la tabella con pippon e Idn

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm...il problema è che nemmeno così funziona. Nel senso, con il left join lui aggiunge la riga anche se non c'è un id, ma nel count grazie al group by la conta come "riga", e quindi restituisce 1 al count, non 0.

  8. #8
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    umh..effettivamente io ho provato la query su un simil oracle e non MySql...pero' a me tornava 0. Speravo funzionasse uguale, mi spiace

    Mi puoi postare esattamente la query che hai fatto tu ?

    EDIT. Forse ho capito. Anziche' fare Count(*) fai Count(campo_che_contiene_ID).

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    eccola quì :

    codice:
    select categoria, count(*) from gallery_category as g1 LEFT JOIN gallery as g2 ON g1.categoria=g2.category group by g1.categoria

  10. #10
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Forse non hai letto l'edit.

    Prova a fare Count(g2.campo) ove campo e' il tipo ID1, ID2 nell'esempio (non l'id di join)

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.