Ciao
chiedo il vostro aiuto, dato che siete tutti molto ferrati in materia
allora
io ho una tabella 'tab_valori'
con questi campi:
Codice PHP:
`id` double default NULL,
`data` datetime default NULL,
`valore` double(6,2) default NULL,
questi dei valori di esempio
Codice PHP:
INSERT INTO `tab_valori` (`id`, `data`, `valore`) VALUES
(101, '2012-08-05 00:03:15', 1.70),
(101, '2012-08-05 02:50:22', 1.80),
(101, '2012-08-05 02:46:39', 2.30),
(101, '2012-08-06 18:26:05', 3.00),
(101, '2012-08-07 00:11:22', 1.30),
(101, '2012-08-06 23:54:22', 1.50),
(101, '2012-08-07 05:12:33', 0.90),
(101, '2012-08-07 12:32:54', 2.60),
(101, '2012-08-07 13:16:51', 2.30),
(101, '2012-08-08 22:37:10', 2.00);
(103, '2012-08-05 03:52:23', 1.60),
(103, '2012-08-05 23:04:58', 1.60),
(103, '2012-08-07 03:04:22', 1.50),
(103, '2012-08-07 14:38:02', 2.20),
mi servono i totali per giorno divisi per int(valore)
ad esempio, dovrebbe uscirmi (prendo solo l'id 103 per semplificare)
id data tot1x tot2x tot3x tot4x tot5x tot6x tot7x tot8x tot9x tot10x
103 2012-08-05 2 0 0 0 0 0 0 0 0 0
103 2012-08-07 1 1 0 0 0 0 0 0 0 0
al momento, dato che i valori vanno da 0.x a 10.x
e mi servono i totali per giorno divisi per int(valore)
faccio un giro del cavolo
ciclo da 0 a 10
for ($conta = 0; $conta <= 10; $conta++)
ed eseguo la query
Codice PHP:
$query = "SELECT id, cast(data as date) as giorno, count(*) AS totale FROM tab_valori ";
$query .= "WHERE id = '".$id."' AND `data` >= '$query_data_da' AND `data` <= '$query_data_a' ";
$query .= "AND valore >=".$conta." AND magn <".($conta+1)." ";
$query .= "group by giorno ORDER BY data ASC ";
ovviamente questo procedimento lo ripeto per tutti gli id
e memorizzo i risultati in una tabella temp che ha questa struttura
id data tot1x tot2x tot3x tot4x tot5x tot6x tot7x tot8x tot9x tot10x
e poi da li me li pesco/lavoro
magari, voi che siete più competenti di me in query sql, mi aiutate a creare una query che mi tira fuori direttamente quello che serve, senza troppi giri
Web