[Db] subquery e date

Domenico L. domenico.lorusso a pleiade.it
Mer 30 Maggio 2007 11:02:54 CEST


Marcello Vezzelli ha scritto:
> Domenico L. ha scritto:
>>
>> il group by sul date-format altrimenti ti fa un group by al secondo!
>> per gli ordinamenti devi sbaterti un po' di più ma non è difficile
>
> Per complicare la cosa....
Ma sei sicuro di avere solo delle date e non dei datetime?


> Dal punto di vista didattico, se volessi aggiungere una colonna con i 
> assegnati+chiusi lo stesso giorno?
> Si riesce a fare senza subquery?

la soluzione semplice è quella giusta:


select date(data) as data, sum(if(stato=1,1,0)) as assegnato, 
sum(if(stato=2,1,0)) as chiuso,

sum(if(stato=1,1,0)) + sum(if(stato=2,1,0)) as ass_chiuso, #-> i dbms, 
anche quelli meno seri,
# dovrebbero fare un controllo sull'identità delle proiezioni,
#cioè si rende conto che sum(...) sono già calcolati,
#quindi questa dovrebbe essere la soluzioni migliore in generale



#oppure
sum(if(stato=1 or stato=2,1,0)) as ass_chiuso1,

#oppure
sum(if(stato>0)) as ass_chiuso2 ,


#oppure in questo caso
count(*) as ass_chiuso2


from codici
where stato>0
group by date(data)

Studiare il sql (3 anche mysql ne incorpora una buona parte) semplifica 
di molto la vita del programmatore.

Altrimenti tanto vale usare i file :-)

ciao

-- 
Domenico L.        	 icq: 645 44 861 - msn: strahd a jumpy.it

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



Maggiori informazioni sulla lista Db