- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Report da MYSQL - select condizionato e "group by"
-
Report da MYSQL - select condizionato e "group by"
Ciao a tutti,
Cerco di esporre il problema nel modo piu' semplice,
Data una tabella con le seguenti colonne:id - giorno - nome - issue
tenendo presente che il campo issue puo' assumere i seguenti valori : 0, 1, 2, 3avrei la necessita' di creare un report che mi visualizza dato un "giorno" la lista dei nomi e affianco la somma di tutte le issue con valore 0 e il conteggio di tutte le issue con valore maggiore di 0
esempio pratico, inserisco delle entry a caso:
[INDENT]1 09/04/2009 giulio 0
2 09/04/2009 matteo 0
3 09/04/2009 giulio 1
4 09/04/2009 giulio 0
5 09/04/2009 matteo 3
6 09/04/2009 giulio 2
[/INDENT]
dovrei ottenere una tabella di questo tiponome issue0 totissues
giulio 2 3
matteo 1 3mi e' stato suggerito di utilizzare una query richiamata in php simile a questa
SELECT nome, SUM(IF(issue =0,0,issue)) AS issue0, SUM(IF(issue > 0,0,issue)) AS totissues FROM tabella group by nome
Il problema e' che non vengon fuori i valori corretti...
Mi sapreste dare una mano??? qual'e' la via piu' breve e/o semplice??
-
Ciao,
entrambe le somme sono errate. La prima equivale a SUM(issue), la seconda darà sempre 0 come risultato (a m eno di non inserire numeri negativi come valori di issue)Se ho capito bene cosa vuoi ottenere, la query corretta è:
SELECT nome, SUM(IF(issue=0,1,0)) AS issue0, SUM( issue ) AS totissues FROM dd GROUP BY nome
Alessandro
-
Funziona!
Mi daresti una spiegazione sulla query in modo tale da capire esattamente il funzionamento ????
Grazie mille,
Davide
-
Ciao,
questoSUM(IF(issue=0,1,0))
è il codice per la conta degli "issue" pari a zero.
Se issue=0, somma 1, altrimenti 0
Nel caso volessi contare, ad esempio, tutti gli issue=3 ti basta modificare l'espressione di controllo nell'IF mettendo appunto issue=3.Questo
SUM(issue)
somma semplicemente tutti gli issue. Non serve inserire il controllo issue>0 se questo non può assumee valori negativi.
Non è necessario neanche diversificare il caso =0 e !=0, perchè sommando 0 non cambierebbe nulla al risultato finale.Alessandro
-
Capito,
Grazie mille
Davide