[Débutant] Requête Sql

Requête Sql [Débutant] - SQL/NoSQL - Programmation

Marsh Posté le 09-05-2005 à 22:37:22    

Tout dabord bonjour a tous, ceci est mon premier post sur le forum Hardware.fr :)
 
Voila après avoir chercher sur le forum et n'avoir rien trouvé qui s'y approche (mais j'ai peut être, même surement, mal cherché) je pose emon probleme ici.
 
Je possede 3 tables sous MySql: Joueurs (qui contient les infos des joueurs), joue (qui contient les pseudos et les equipes de joueurs) et jeux (qui contient les infos sur les jeux).
 
Structure: joueurs (num_joueur,nom_joueur...)
           jeux (num_jeux, nom_jeux...)          
           joue (num_joue, #num_joueur, #num_jeux, pseudo, equipe)
 
Mon probleme est: je n'arrive pas a faire une requete qui me permettrai de connaitre le jeux le plus joué (c'est à dire celui a qui le plus grand nombre de pseudo est associé). Une idée? Merci d'avance :)

Reply

Marsh Posté le 09-05-2005 à 22:37:22   

Reply

Marsh Posté le 09-05-2005 à 23:09:41    

La jointure est ton ami.
(LEFT OUTER JOIN, RIGHT OUTER JOIN, RIGHT INNER JOIN, NATURAL JOIN, cf la doc mysql)
 

Code :
  1. SELECT COUNT(jeux.num_joueurs) FROM
  2. joueurs  NATURAL JOIN
  3. jeux  NATURAL JOIN         
  4. joue GROUP BY jeux.num_jeux ORDER BY
  5. COUNT(jeux.num_joueurs) ASC LIMIT 10


(format mysql)


Message édité par zapan666 le 09-05-2005 à 23:11:05
Reply

Marsh Posté le 10-05-2005 à 00:43:26    

Tout dabord merci pour ta reponse :)
 
Mais je ne voit pas ou tu veut en venir avec cette requete? a quoi sert limit 10 entre autre?
 
Désolé mes connaissances en la matière ne sont pas très élevés :(

Reply

Marsh Posté le 10-05-2005 à 10:56:24    

Je reponds pour zapan,
Limit sert a limiter ton resultset a juste dix elements.
En supposant que tu ais plus de 10 resultats pour ta requete, sa solution ne te donnera pas satisfaction.
Ceci fera plutot l'affaire:

Code :
  1. SELECT COUNT(jeux.num_joueurs) FROM 
  2. joueurs  NATURAL JOIN
  3. jeux  NATURAL JOIN         
  4. joue GROUP BY jeux.num_jeux ORDER BY
  5. COUNT(jeux.num_joueurs) DESC


 
Ainsi, le premier element du resultset sera celui que tu cherches. A toi ensuite de prendre ce premier element.

Reply

Marsh Posté le 10-05-2005 à 14:26:06    

Merci beaucoup :)
 
Mais a chaque fois que je l'utilise 1)elle ne veut pas s'executer puisque jeux.num_joueurs n existe pas mais je suppose que vous vouliez dire joue.num_jeux
                                    2) l'utilisation de la clause group est invalide :'(
 
Moi qui voulait juste connaitre le jeux le plus joué ben je suis pas sortit ^^


Message édité par Dhara le 10-05-2005 à 14:57:49
Reply

Marsh Posté le 10-05-2005 à 15:52:16    

Dhara boy,
 
tu as un debut de piste au moins, a partir de la, tu pourras voir, faire des essais et adapter les codes fournis au situations precises que tu auras!!!


---------------
The bible was written by people who believed the earth was flat!
Reply

Marsh Posté le 10-05-2005 à 17:40:27    

je suis tout a fait daccord avec toi mais mon interrogation en reponse a ton message etait plutot: pourquoi group est invalide et pas "filé moi le bon code" ^^

Reply

Marsh Posté le 10-05-2005 à 20:37:34    

Parce que il faut selectionner les champs que l'on groupe. (enfin, si je me souviens bien)  
 

Code :
  1. SELECT jeux.num_joueurs COUNT(jeux.num_joueurs) FROM 
  2. joueurs  NATURAL JOIN 
  3. jeux  NATURAL JOIN           
  4. joue GROUP BY jeux.num_jeux ORDER BY 
  5. COUNT(jeux.num_joueurs) DESC


 
http://dev.mysql.com/doc/mysql/en/ [...] tions.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed