Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2896 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete group by ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete group by ?

n°1155533
jhac
Posté le 21-07-2005 à 08:35:31  profilanswer
 

bonjour,
 
 
je suis pas encore un dieu en php et coince sur une requete .
en fait dans une table je liste pour chaque jour les ventes d'abonnement pour notre club - y'a trois types de prix possibles
ainsi j'ai comme enregistrement
le jour        et le prix  
 
2005-06-16 11:32:40 - 10
2005-06-16 11:41:11 - 26
2005-06-16 11:44:05 - 13
2005-06-16 12:04:21 - 26
2005-06-16 12:40:06 - 13
2005-06-17 15:05:48 - 13
2005-06-17 14:15:51 - 26  
 
et je voudrais faire une requete me permettant d'obtenir comme résultat :
 
2005-06-16 - 3 abo à 10 > 8 abos à 13 > 6 abos à 26
 
ainsi pour chaque jour ...  
 
j'essaye avec un group by .. :
 
$result=mysql_query("SELECT basket.id_bask,basket.ref_seat,basket.prix,users.date FROM basket LEFT JOIN users ON basket.id_user=users.id_user WHERE users.nom!='' GROUP BY basket.prix ORDER BY users.date ASC" );
 
mais çà marche pas .. le COUNT doit être là aussi je pense mais comment ?  
 
$result=mysql_query("SELECT basket.id_bask,basket.ref_seat,basket.prix,COUNT basket.prix AS ct,users.date FROM basket LEFT JOIN users ON basket.id_user=users.id_user WHERE users.nom!='' GROUP BY basket.prix ORDER BY users.date ASC" );
 
 çà marche pas mieux  
 
si vous avez une idée .. merci de me faire avancer
 
jhac

mood
Publicité
Posté le 21-07-2005 à 08:35:31  profilanswer
 

n°1155548
betsamee
Asterisk Zeperyl
Posté le 21-07-2005 à 09:04:18  profilanswer
 

select jour,prix,count(*)
from tatable
group by jour,prix
 
si ta date contient aussi l'heure :
 
 
select left(jour,10),prix,count(*)
from tatable
group by left(jour,10),prix

n°1155555
jhac
Posté le 21-07-2005 à 09:30:09  profilanswer
 

merci.. j'arrive maintenant à avoir la liste groupée par prix mais quand je met le count(*) j'ai une erreur  
 
comment tu récupéres le count dans la réponse ?
merci

n°1155649
betsamee
Asterisk Zeperyl
Posté le 21-07-2005 à 10:58:42  profilanswer
 

ben comme precise plus haut

n°1156358
jhac
Posté le 21-07-2005 à 17:20:05  profilanswer
 

en fait si tu fais count(*) .. comment tu affiches le résult puisque count tappes sur l'ensemble  
 
si je fais :
 
$result=mysql_query("SELECT prix,date,COUNT(prix) AS cnt FROM basket LEFT JOIN users ON basket.id_user=users.id_user WHERE users.nom!='' GROUP BY basket.px" );
 
while ($lg=mysql_fetch_object($result))
{
echo"- $lg->prixx - cnt = $lg->cnt<br />";
}
il affiche pas x abo  à tel prix tel jour ..  
j'ai :  
 2005-06-15 10:39:06 - 13 - cnt = 601
2005-06-15 10:39:06 - 10 - cnt = 33
2005-06-15 11:03:59 - 26 - cnt = 425
2005-06-17 08:54:02 - 46 - cnt = 18
2005-06-24 18:00:35 - 31 - cnt = 7

n°1156441
Arjuna
Aircraft Ident.: F-MBSD
Posté le 21-07-2005 à 19:00:09  profilanswer
 

nan, count(*) porte sur les tuples spécifiés dans la clause group by
 
donc tu remets "prix, date" dans ton group by
 
sinon, je ne sais pas ce qu'a fumé ton SGBD, parceque ta requête telle que tu l'as écrite devrait planter : le GROUP BY doit porter OBLIGATOIREMENT AU MOINS sur la liste des champs ne participant pas à une fonction de regroupement. Dans ton cas, "prix" et "date" doivent obligatoirement être dans la clause group by, c'est la norme SQL qui veut ça.
Bizarre que ton sgbd ne plante pas.

n°1157551
jhac
Posté le 22-07-2005 à 19:07:32  profilanswer
 

désolé mais je comprends pas si je fais :  
COUNT(prix) AS cnt  
je le récupère dans la réponse par  
while ($lg=mysql_fetch_object($result))
{
echo"- $lg->prix - cnt = $lg->cnt<br />";
}  
mais en faisant count(*)
comment récupérer cette  valeur puisque t'a pas de AS ..  
 
merci
 

n°1158205
betsamee
Asterisk Zeperyl
Posté le 24-07-2005 à 08:46:34  profilanswer
 

Citation :


Bizarre que ton sgbd ne plante pas.


 
rassure toi , pour une telle requete son SGBD doit planter
 

Citation :


désolé mais je comprends pas si je fais :  
COUNT(prix) AS cnt  
je le récupère dans la réponse par  
while ($lg=mysql_fetch_object($result))  
{  
echo"- $lg->prix - cnt = $lg->cnt<br />";  
}  
mais en faisant count(*)  
comment récupérer cette  valeur puisque t'a pas de AS ..  
 
merci  
 


ca c'est deja du php:
 

Code :
  1. $rsql="select jour,prix,count(*)
  2.         from tatable
  3.         group by jour,prix ";
  4. if(!$resultat_sql = mysql_query($rsql,$connexion) )
  5. {
  6.   echo "Erreur de requete ";
  7.   exit;
  8. }
  9. while($ligne = mysql_fetch_row($resultat_sql))
  10. {
  11. $jour = $ligne[0];
  12. $prix = $ligne[1];
  13. $cnt  = $ligne[2];
  14. //...Fais les echos que tu veux avec tes elements ici
  15. }

n°1158402
jhac
Posté le 24-07-2005 à 18:46:10  profilanswer
 

ok ... et en le faissant çà me donne vraiment ce que je souhaite, si je fais  :
 $result=mysql_query("SELECT users.date,basket.prix,COUNT(*) FROM basket LEFT JOIN users ON basket.id_user=users.id_user WHERE users.nom!='' GROUP BY basket.prix,users.date" );
 
while ($lg=mysql_fetch_row($result))
{
$jour = $lg[0];
 $prix = $lg[1];
 $cnt  = $lg[2];
echo" $jour > $prix - $cnt <br />";  
}
j'obtiens :  
 2005-06-15 10:39:06 > 13 - 1
2005-06-15 11:36:18 > 10 - 3
2005-06-15 12:40:21 > 10 - 1
2005-06-16 10:59:56 > 10 - 1
2005-06-16 11:21:53 > 26 - 1
2005-06-16 11:32:40 > 10 - 1
2005-06-16 11:44:05 > 10 - 2
2005-06-16 14:19:16 > 10 - 2
2005-06-16 14:39:27 > 10 - 1
2005-06-16 14:45:33 > 10 - 1
2005-06-16 14:47:38 > 10 - 1  
et ainsi pour chaque enregsitrement ..
alors que je voudrais faire le total par jour et avoir  
 
par ex :  
2005-06-16  
8 à 26  
5 à 13
 
 
et ainsi pour chaque jour ..
merci de vos réponses ..  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete group by ?

 

Sujets relatifs
Probleme dans requete sqlRequête sur MySQL [PHP]
Ouverture d'un formulaire avec requête paramétréeRequete ... est possible
requete qui marche sous easyphp mais pas sous serveur unix[SQL] Requete (max, group by,...)
Requete Group by[MySQL4] Requête group by
[SQL] [Résolu] Requete avec COUNT et GROUP BY[SQL & Criteria] ORDER BY & GROUP BY dans une même requete
Plus de sujets relatifs à : requete group by ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR