Question

Je voudrais créer un tableau (en php) à partir de résultats SQL comme ceci: Nous avons la table sql " Posts " qui stocke le nom et le message . Exemple:

  

Nom | Message

     

John | Bonjour

     

Nick | belle journée

     

George | Au revoir

     

John | où

Ce que je veux, c'est afficher les noms des personnes qui ont posté un message mais qui n'ont pas affiché les mêmes noms plus d'une fois . Donc, la sortie serait John, Nick, George. (D'après ces enregistrements, nous voyons que John a posté 2 messages, mais à la sortie finale, nous ne voyons qu'une seule fois son nom.)

Est-ce possible? Merci d'avance.

Était-ce utile?

La solution

Essayez:

$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);

Autres conseils

SELECT DISTINCT

Vous pouvez exécuter une requête SQL uniquement pour sélectionner les noms distincts, et rien d’autre:

SELECT DISTINCT Name FROM Posts;

Cela vous donnera un ensemble de résultats comprenant des valeurs de noms distinctes, chaque valeur unique n'étant renvoyée qu'une fois dans l'ensemble.

pour obtenir le nombre que vous aurez besoin d'agréger à l'aide de group by:

SELECT         PRÉNOM     , COUNT (*) en postes DE         Des postes PAR GROUPE         NOM

Voici le code SQL si vous n'êtes pas opposé au groupe BY

select count(name) as N, name from posts group by name ;

Personnes ayant plus d'un message

select count(name) as N, name from posts group by name having N > 1 ;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top