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.

È stato utile?

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 ;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top