Raggruppare elementi di una tabella

  • Creatore Discussione Creatore Discussione mircop
  • Data di inizio Data di inizio

mircop

Nuovo Utente
1 Feb 2013
4
0
0
Ciao a tutti.

Sto cercando di raggruppare dei dati da una tabella.

La query che faccio mi crea una tabella json (che mi serve per graficare) contentente le coppie di valori data-valore. Io vorrei avere nel grafico solo 12 punti (cioè uno per mese) e non 365 (uno per giorno). Al momento la tabella che ho è qualcosa del genere:

{"cols":[{"label":"Data","type":"string"},{"label":"Valore","type":"number"}],"rows":[{"c":[{"v":"1 Gen"},{"v":12.4}]},{"c":[{"v":"2 Gen"},{"v":9}]},{"c":[{"v":"3 Gen"},{"v":11.2}]}, ... {"c":[{"v":"10 Feb"},{"v":10}]},{"c":[{"v":"11 Feb"},{"v":8.7}]}]} ...

e così via. Come potrei fare? Pensavo che forse conviene agire all'interno del while($row = mysql_fetch_assoc($result)), creando una variabile diversa ogniqualvolta cambia mese, ma non so fare. O forse conviene agire dopo, una volta creata jsonTable (quindi facendo una ricerca nel risultato sopra riportato)?

Grazie in anticipo, vi lascio quel che ho fatto finora.

PHP:
...
$rows = array();
$flag = true;
$table = array();
$table['cols'] = array(
        array('label' => 'Data', 'type' => 'string'),
	array('label' => 'Valore', 'type' => 'number')
);

while($row = mysql_fetch_assoc($result)) {
        $temp = array();
	$array = explode("-", $row['data']); 
	$date = $array[2]." ".$array[1];
	$temp[] = array('v' => (string) $date); 
	$temp[] = array('v' => (float) $row['valore']); 
	$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
...
 
ciao,
ma non puoi modificare la query?
ad esempio mettendo un GROUP BY YEAR(campodata)
 
Grazie per la risposta, era la strada che avevo iniziato a percorrere.

Alla fine (se può interessare a qualcun altro) la query che ho fatto è la seguente

PHP:
SELECT MONTH(data) AS mese, SUM(valore) AS totale FROM storico WHERE CURDATE() >= CURDATE() - INTERVAL 1 YEAR GROUP BY MONTH(data)
 

Discussioni simili