Sql risulta in array php
Domanda
Vorrei creare un array (in php) da risultati sql come questo: Abbiamo la tabella sql "Messaggi" che memorizza il Nome e il Messaggio . Esempio:
Nome | Messaggio
Giovanni | Ciao
Nick | bella giornata
George | Arrivederci
Giovanni | dove
Quello che voglio è mostrare i nomi delle persone che hanno pubblicato un messaggio ma non visualizzano gli stessi nomi più di 1 volta . Quindi l'uscita sarebbe John, Nick, George. (Da questi record, vediamo che John ha pubblicato 2 messaggi, ma all'output finale, vediamo solo una volta il suo nome).
È in qualche modo possibile? Grazie in anticipo.
Soluzione
Prova:
$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
$names[] = $row[0];
}
print_r($names);
Altri suggerimenti
SELEZIONA DISTINCT
È possibile eseguire una query SQL per selezionare solo nomi distinti e nient'altro:
SELECT DISTINCT Name FROM Posts;
Questo ti darà un set di risultati costituito da valori Nomi distinti, con ogni valore univoco restituito solo 1 volta nel set.
per ottenere il conteggio dovrai aggregare usando il gruppo per:
SELEZIONARE
NOME
, COUNT (*) come post
A PARTIRE DAL
Messaggi
RAGGRUPPA PER
NAME
Ecco l'SQL se non sei contrario al gruppo BY
select count(name) as N, name from posts group by name ;
Persone con più di 1 post
select count(name) as N, name from posts group by name having N > 1 ;