KieferS
Messages postés14Date d'inscriptionjeudi 16 février 2006StatutMembreDernière intervention10 mars 2011
-
2 août 2007 à 13:43
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
2 août 2007 à 14:33
Salut,
J'ai le problème suivant concernant une de mes requêtes SQL...
Tout d'abord j'ai une base de données comme celles-ci :
nom sexe sante maladie paul homme mauvaise grippe
pierre homme bonne
claire femme mauvaise grippe
jean homme mauvaise rhume
fabrice homme mauvaise grippe
Je souhaiterai connaître pour chaque maladie le nombre de personnes masculines atteintes. Ces maladies devant être classées par ordre décroissant selon le nombre de personnes concernées.
On devrait obtenir le résulta suivant :
maladie count(*)
grippe 2
rhume 1
J'ai construit la requête suivante :
<?php
$requete1=mysql_query("SELECT count(*), maladie FROM bilan_sante WHERE ((sexe='homme) AND ((sante='mauvaise')) GROUP BY maladie ORDER BY count(*) DESC");
?>
Voici mon algo qui fait "parler" ma requête :
<?php
while($algo1=mysql_fetch_array($requete1))
{
echo "$algo1[maladie]";
echo "$algo1[0]";
}
?>
Lors de l'affichage de ma page, j'ai 1 erreur me disant que mon "mysql_fetch_array" contient un argument invalide. L'erreu vient sans doute de ma requête. J'ai essayé sans "ORDER BY count(*) DESC" : ça marche SAUF que je perds mon classement par ordre décroissant !!!
Y-a-t-il une astuce ou est-ce ma requête qui est masle construite ??!!
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 2 août 2007 à 14:27
Salut,
Deux choses :
1. Tu peux connaitres l'erreur MySQL que tu as commise :
$resultat = mysq_query( ... );
if ( $resultat === false ) die( mysql_error() );
2. Tu dois donner un alias (nom) à ta colonne "count(*)" pour pouvoir la réutiliser ailleur dans la requête :
select maladie, count(*) as nb from ... where ... order by nb desc
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 août 2007 à 14:33
Hello,
si c'est bien ça ta requête :
$requete1=mysql_query("SELECT count(*), maladie FROM bilan_sante
WHERE ((sexe='homme) AND ((sante='mauvaise')) GROUP BY maladie ORDER BY
count(*) DESC");
elle est fausse.
=>
$requete1=mysql_query("SELECT count(*), maladie FROM bilan_sante
WHERE ((sexe='homme') AND ((sante='mauvaise')) GROUP BY maladie ORDER BY
count(*) DESC");