>ho una tabella con dei colori e ad ogni colore c'è associata
>una data.
>ho fatto una query dove mi conta quante volte compare il colore
>rosso nel mese di gennaio, febbraio e marzo, quindi ho fatto
>cosi
>
>SELECT Count(*) as presenze
>from tabella1
>WHERE (tabella.COLORE like '*Rosso*') AND (tabella.DATA like
>'*/01/2006');
>UNION SELECT Count(*) as presenze
>from tabella1
>WHERE (tabella.COLORE like '*Rosso*') AND (tabella.DATA like
>'*/02/2006');
>UNION SELECT Count(*) as presenze
>from tabella1
>WHERE (tabella.COLORE like '*Rosso*') AND (tabella.DATA like
>'*/03/2006');
Questa non è la miglior via per ottenere quello che vuoi. Innanzitutto, non capisco perchè utilizzi l'operatore LIKE, visto che per integrità del dato, l'informazione colore dovrebbe essere uniforme.
In secondo luogo, sarebbe meglio normalizzare la struttura, magari facendo una tabella colori, composta da un IDColore ed una DescrizioneColore. In questo modo eviteresti l'eccessiva ridondanza dei dati.
Detto questo la query con union non è quella che mi sento di consigliarti.. Prova a dare un occhoi a questo SQL:
SELECT COUNT(*),MONTH(data) AS Mese
FROM tabella1
GROUP BY MONTH(data)
in poche parole raggruppo i dati per mese e li conto.. se ti servono solo dei primi 3 mesi, basta aggiungere una Having dopo il GROUP BY, come segue:
SELECT COUNT(*),MONTH(data) AS Mese
FROM tabella1
GROUP BY MONTH(data)
HAVING MONTH(data) <= 3
>mi chiedo perchè una volta avviata la query me la ordina in ordine
>crescente? cioè
>
>|presenze|
>1
>2
>3
Union ordina e rimuove i duplicati..
>
>tnx
di nulla!
Alx81 =)
http://blogs.dotnethell.it/suxstellino