Résultats SQL dans un tableau php
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.
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 ;