A voir également:
- [SQL] Requete sql
- Logiciel sql - Télécharger - Bases de données
- Sql replace plusieurs valeurs - Forum Programmation
- Récupération serveur sql - Télécharger - Gestion de données
- Requete sql pix - Forum PHP
- Dupliquer une table sql ✓ - Forum Programmation
4 réponses
Xandler
Messages postés
38
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 mai 2007
4 mai 2007 à 16:08
4 mai 2007 à 16:08
Salut,
Essaie ça :
select num,count(numero) from nomTable group by numero order by count(numero) desc;
je pense ça devrait marcher !
@+
Essaie ça :
select num,count(numero) from nomTable group by numero order by count(numero) desc;
je pense ça devrait marcher !
@+
Oki je vais essayé merci
Par contre comment je fais a recuperer la valeur trouvé ?
pour le numero je fais :
$sql="select num,count(numero) from table group by numero order by count(numero) desc";
$req=mysql($database, $sql);
$nb = mysql_num_rows($req);
$i=0;
while ($i<$nb)
{
$numero = mysql_result($req, $i, "numero");
$nb_occurence = ?????????
echo" $numero : $nb_occurence";
$i++;
}
Merci à toi
@ tte
Par contre comment je fais a recuperer la valeur trouvé ?
pour le numero je fais :
$sql="select num,count(numero) from table group by numero order by count(numero) desc";
$req=mysql($database, $sql);
$nb = mysql_num_rows($req);
$i=0;
while ($i<$nb)
{
$numero = mysql_result($req, $i, "numero");
$nb_occurence = ?????????
echo" $numero : $nb_occurence";
$i++;
}
Merci à toi
@ tte
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
4 mai 2007 à 17:03
4 mai 2007 à 17:03
$sql="select num,count(numero) as total from table group by numero order by count(numero) desc"; $req=mysql($database, $sql); $nb = mysql_num_rows($req); $i=0; while ($i<$nb) { $numero = mysql_result($req, $i, "numero"); $nb_occurence = mysql_result($req,$i,"total"); echo" $numero : $nb_occurence"; $i++; }
Merci ca marche nickel
Par contre j'avais simplifié ma demande en croyant qu'avec la reponse je pourrai trouver la suite tout seul mais ce n'est pas le cas... :(
En faite, dans ma table y'a d'autres champs, entre autre le champs status (qui a pour valeur soit 0 ; 1 ou 2) et je voudrai savoir combien il y a d'occurence avec un status 1 et combien d'occurence avec status 2 mais ne pas prendre en compte ceux a status 0.
ma table : (id / numero / status)
1/ 2 / 0
2/ 1 / 0
3/ 1 / 2
4/ 3 / 1
5/ 3 / 1
6/ 3 / 0
Je voudrai comme resultat :
numero | nombre a status 1 | nombre a status 2
3 2 0
1 0 1
Voici ma requete
$sql= "SELECT idproduit, COUNT(idproduit) as total FROM caddie WHERE status IN (1, 2) AND date LIKE '2007-04-%' GROUP BY idproduit ";
$req=mysql($database, $sql);
$nb=mysql_num_rows($req);
$i=0;
while ($i<$nb)
{
$nom = mysql_result($req, $i, "idproduit");
$nbre = mysql_result($req, $i, "total");
echo"id : $nom , nombre : $nbre<br>";
$i++;
}
Elle m'affiche
3 : 2
1 : 1
je sais que pour le nombre 3 y'a 2 occurence qui ont soit status 1 ou 2 mais je peux pas savoir combien sont a status 1 et combien a status 2.
J'espere que je me suis bien exprimé.
En tout cas MERCI a vous :p
Par contre j'avais simplifié ma demande en croyant qu'avec la reponse je pourrai trouver la suite tout seul mais ce n'est pas le cas... :(
En faite, dans ma table y'a d'autres champs, entre autre le champs status (qui a pour valeur soit 0 ; 1 ou 2) et je voudrai savoir combien il y a d'occurence avec un status 1 et combien d'occurence avec status 2 mais ne pas prendre en compte ceux a status 0.
ma table : (id / numero / status)
1/ 2 / 0
2/ 1 / 0
3/ 1 / 2
4/ 3 / 1
5/ 3 / 1
6/ 3 / 0
Je voudrai comme resultat :
numero | nombre a status 1 | nombre a status 2
3 2 0
1 0 1
Voici ma requete
$sql= "SELECT idproduit, COUNT(idproduit) as total FROM caddie WHERE status IN (1, 2) AND date LIKE '2007-04-%' GROUP BY idproduit ";
$req=mysql($database, $sql);
$nb=mysql_num_rows($req);
$i=0;
while ($i<$nb)
{
$nom = mysql_result($req, $i, "idproduit");
$nbre = mysql_result($req, $i, "total");
echo"id : $nom , nombre : $nbre<br>";
$i++;
}
Elle m'affiche
3 : 2
1 : 1
je sais que pour le nombre 3 y'a 2 occurence qui ont soit status 1 ou 2 mais je peux pas savoir combien sont a status 1 et combien a status 2.
J'espere que je me suis bien exprimé.
En tout cas MERCI a vous :p
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
>
angel
9 mai 2007 à 12:39
9 mai 2007 à 12:39
Bonjour,
Je te conseil de faire des requetes séparées dans ta boucle while pour chacun des nombres connus.
Je ne sais pas d'ou sort ta variable '$nombre' mais bon...
Donc voilà a peu pres l'idée :
Voilà l'idée est là. La premiere requete te permet de sélectionner l'ensemble des numéros.
Les deux requetes présente dans la boucle te permettent de prendre les totaux de status à 1 puis 2 pour chaque numéro récupéré.
Il te reste à adapter ça en fonction de tes besoins.
Je ne suis pas très doué pour mettre tout cela sous la forme d'une seule et même requête donc c'est un solution de secours en attendant que quelqun qui s'y connait mieux en SQL passe par là :)
Je te conseil de faire des requetes séparées dans ta boucle while pour chacun des nombres connus.
Je ne sais pas d'ou sort ta variable '$nombre' mais bon...
Donc voilà a peu pres l'idée :
$sql= "SELECT DISCTINCT numero FROM caddie WHERE status = '1' AND date LIKE '2007-04-%' GROUP BY idproduit "; $req=mysql($database, $sql); $nb=mysql_num_rows($req); $i=0; while ($i<$nb) { $numero= mysql_result($req, $i, "numero "); // --- Sous requetes pour chaque chacun des numéros afin de connaitre séparement le nombre de status 1 puis 2 pour le numéro courant : $rqt1 = "SELECT COUNT(status) as total1 FROM caddie WHERE status = '1' AND numero = '".$numero."' "; $rqt2 = "SELECT COUNT(status) as total2 FROM caddie WHERE status = '2' AND numero = '".$numero."' "; $request1=mysql($database, $rqt1); $request2=mysql($database, $rqt2); $line1 = @mysql_fetch_assoc($request1); $line2 = @mysql_fetch_assoc($request2); echo $numero." | ".$line1["total1"]." | ".$line2["total2"]."<BR>"; $i++; }
Voilà l'idée est là. La premiere requete te permet de sélectionner l'ensemble des numéros.
Les deux requetes présente dans la boucle te permettent de prendre les totaux de status à 1 puis 2 pour chaque numéro récupéré.
Il te reste à adapter ça en fonction de tes besoins.
Je ne suis pas très doué pour mettre tout cela sous la forme d'une seule et même requête donc c'est un solution de secours en attendant que quelqun qui s'y connait mieux en SQL passe par là :)
Salut Kij_82
Merci pour ta réponse
J'ai effectivement utilisé cette solution de "secours" en attendant.
Le probleme est que ma premiere requête trouve environ 1000 résultat dans ma base (hé oui c une grosse base :p)
Dans cette solution mon serveur doit executer 2001 requêtes, et apparement il apprecie pas trop... (moi non plus d'ailleurs :D)
En tout cas merci de t'etre penché sur le probleme.
Merci pour ta réponse
J'ai effectivement utilisé cette solution de "secours" en attendant.
Le probleme est que ma premiere requête trouve environ 1000 résultat dans ma base (hé oui c une grosse base :p)
Dans cette solution mon serveur doit executer 2001 requêtes, et apparement il apprecie pas trop... (moi non plus d'ailleurs :D)
En tout cas merci de t'etre penché sur le probleme.