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

Discussione: Group By

  1. #1

    Group By

    Ho una tabella ordini_formati fatta così
    Codice PHP:
    id_ordine            id_formato       n_copie

         10                  2                8
         10                  2                4
         10                  4                6
         11                  2                8
         11                  2                4 

    ora se eseguo la query:

    SELECT id_formato,id_ordine,SUM(n_copie) AS somma FROM ordini_formati GROUP BY id_formato HAVING id_ordine=10

    io vorrei mi venissero restituite due righe per il formato 2 con somma=12 e per il formato 4 con somma=6. Invece mi viene restituita una sola riga in cui la somma=24 in pratica mi somma le n_copie del formato 2 di qualsiasi id_ordine. Mi sapete dire dove stà l'errore? In pratica quello che mi serve è sapere quante n_copie ci sono per ogni formato di ogni ordine. Grazie

  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    la sparo e mettere where la posto di having? cambia qualcosa?

  3. #3
    Riferendomi al mio primo post per correttezza avrei dovuto dire:
    Quello che voglio ottenere è sapere quante n_copie ci sono per ogni id_formato di uno specifico ordine

    In una clausola GROUP BY non si può usare WHERE ma BISOGNA usare HAVING. Comunque grazie.
    La cosa strana è che se è presente nella tabella un solo id_ordine tutto funziona regolarmente, le righe restituite sono pari al numero degli id_formato e le somme sono corrette

  4. #4
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    nn vorrei farti perdere tempo ma perchè dici :
    In una clausola GROUP BY non si può usare WHERE ma BISOGNA usare HAVING
    io la usa spesso questa combinazione(GROUP BY e WHERE )... è sbagliato come contetto? o cos'altro?

  5. #5
    Scusa non voglio fare il professore dato che ho tutto da imparare ma se provi ad eseguire la query
    SELECT id_formato,id_ordine,SUM(n_copie) AS somma FROM ordini_formati GROUP BY id_formato WHERE id_ordine=10
    ti viene restituito un errore di sintassi. Forse tu la usi senza la funzione di aggregazione SUM oppure se a te funziona non so cosa dirti. Nel frattempo credo di avere irsolto il mio problema. La query andava scritta così:

    SELECT id_formato,id_ordine,SUM(n_copie) AS somma FROM ordini_formati GROUP BY id_formato,id_ordine HAVING id_ordine=10

    Dato che non mi è chiaro perchè non funzionasse senza il GROUP BY anche per id_ordine se c'è qualcuno che ha la pazienza di spiegarmelo gliene sarei grato.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    La clausola WHERE va prima del GROUP BY

    prova così:

    SELECT id_formato,id_ordine,SUM(n_copie) AS somma FROM ordini_formati WHERE id_ordine=10 GROUP BY id_formato

  7. #7
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    Scusa non voglio fare il professore...


    La clausola WHERE va prima del GROUP BY
    e si si...

  8. #8
    Grazie mille, funziona perfettamente. Oggi ho imparato due modi per fare la stessa cosa

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Guarda che non è esattamente la stessa cosa...

    Cioè, HAVING è una clausola che specifica in un GROUP BY quello che tu hai già richiesto con il WHERE...

    Direi che la differenza non è proprio pochissima...

  10. #10
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    quoto pienamente quanto detto da clasku

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.