Contare determinati valori che si ripetono in una tabella per un detemrinato ID

Luca Darken Coraggio

Nuovo Utente
28 Apr 2013
6
0
0
Salve, ho una situazione del genere
HTML:
 idMessage  Motivazione 
     65                2     
     45                3     
     65                1     
     55                1  
     65                2

e necessito di prelevare i dati raggruppandoli per idMessage e Motivazione.
In pratica vorrei sapere quante motivazioni aventi lo stesso numero (il range va da 1 a 3) si ripetono all'interno della tabella.
Nell'esempio proposto ad esempio vorrei un risultato del genere
HTML:
ID | 1 | 2 | 3
  
65   1    2    0
45   0    0    1
55   1    0    0

Attualmente ho steso questa query
SELECT idMessage, Motivazione COUNT(*)
FROM reports
GROUP BY idMessage, Motivazione;

in parte svolge il compito richiesto ma non nella maniera a cui miro. E' migliroabile come query o mi devo arrangiare per quel che offre?
 
ciao
secondo me devi risolverlo via script.
non so cosa usi, ma ti faccio uno schema in php (da verificare comunque)
PHP:
<?php
//....
$motivazione=array('1','2','3');
foreach($motivazione as $m){
	$query="SELECT idMessage, Motivazione COUNT(*) as tot
		FROM reports WHERE Motivazione='$m'
		GROUP BY idMessage, Motivazione";
	$ris=mysql_query($query);
	$riga=mysql_fetch_array($ris);
	$id=$riga['idMessage'];
	$rapporto[$id][$m]=$riga['tot'];
}
echo "<table><tr><td>ID</td><td>1</td><td>2</td><td>3</td></tr>";
forech($rapporto as $ch -> $val){
	echo "<tr><td>$ch</td>";
	foreach($val as $v){
		echo "<td>$v</td>";
	}
	echo "</tr>";
}
echo "</table>";
//....
?>

p.s.
ho usato le vecchie istruzioni mysql perchè faccio prima, ma tu passa a mysqli o alla pdo
 
Premetto che non so quale sia l'effettivo carico apportato da ciascuna query, ad ogni modo non è deleterio interrogare per tre volte il database quando basterebbe una sola query?
Io per il momento ho comunque risolto via successivi passaggi php tramite l'ausilio di due array, ma utilizzando un'unica query
 

Discussioni simili