Problème de requêtes !

Eléphant du PHP | 259 Messages

23 juil. 2007, 16:48

Bonjour,

j'aimerais afficher les 10er sondage ou il y a le plus d'id_membre qui y ont participer.
J'ai une table sondage ou il y a tous les id des membres qui ont participer au sondage. J'aimerais afficher les 10 sondages ou il y a le plus de participation.

Voici mon code :

$req =  mysql_query("SELECT id_sondage FROM sondages") or die (mysql_error());

while($val = mysql_fetch_array($req)) 
{
$id_sondage = $val['id_sondage']; 

$req1 =  mysql_query("SELECT COUNT(DISTINCT id_membre) as nb FROM participer WHERE id_sondage = '$id_sondage' ORDER BY nb ASC LIMIT 0,10") or die (mysql_error());

while($val1= mysql_fetch_array($req1)) 
{
$nb = $val1['nb']; 

echo ' id sondage : '; echo $id_sondage; 
echo ' nb : '; echo $nb;
echo '<p></p>';
}

}

Le probléme c'est que cela m'affiche tous les sondage, et pas d'ans l'ordre décroissant du nombre d'id_membre (les 10 + grand en fait).

comment faire ?

ViPHP
ViPHP | 928 Messages

23 juil. 2007, 16:54

Bonjour,
essaie cette requête :

Code : Tout sélectionner

SELECT id_sondage, COUNT(id_membre) AS nb FROM participer GROUP BY id_sondage ORDER BY nb DESC
Explication :
1) Tu sélectionnes le champ id_sondage et tu comptes les ID des membres
2) GROUP BY permet de dire que tu veux séparer ta table en fonction de id_sondage, et que donc tu vas compter les id_membre pour chaque sondage de façon disctincte
3) Tu tries avec le total, de façon décroissante

Eléphant du PHP | 259 Messages

24 juil. 2007, 09:31

merci, ça marche super bien :wink: