{MySQL} requete

Fermé
jooser - 8 janv. 2010 à 11:56
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 8 janv. 2010 à 13:13
Bonjour,


je suis en charge du developpement d'une application pour gerer une competition d'athletisme.Le classement de la competition se fera en additionant les points des 5 meilleures performances.
j'ai une table athlete :
*licence*nom*prenom*club*sexe*
et une table competition:
*id*epreuve*performance*score*id_athlete(fk ->athlete.licence)*club*
Il me faut donc u classement par epreuve des 5 meilleures scores.J'ai essayé quelque chose comme
select distinct athlete.nom,competition.epreuve,athlete.prenom,competition.score
    from competition a , athlete
    where 5=(select sum (distinct epreuve.score)
	     from competition b
             where a.score <=b.score)
             and 
             where sexe=athlete.sexe
             and 
             where epreuve =competition.epreuve
group by competition.epreuve

Pour infos les tables sont inodb

J'ai une erreur mysql qui n'apprecie pas la copie "competition a" donc pas moyen de debuger la requete .
J'aimerais savoir pourquoi mysql n'accepte pas la copie "competition a",dans un premier temps ,puis si quelqu'un aurait une idée pour ma requete.

merci d'avance.

3 réponses

drantd Messages postés 99 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 20 février 2012 20
8 janv. 2010 à 12:10
Bonjour,
Essaye en rajoutant AS pour changer le nom de ta table

from competition AS a
et
 from competition AS b
0
jooser Messages postés 3 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 25 octobre 2010
8 janv. 2010 à 12:31
c'est bien tenter effectivement mais j'ai toujours une erreur .
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct competition.score)
         from competition as b
             where a.sco' at line 3 


Ma requete :
select distinct athlete.nom,competition.epreuve,athlete.prenom,competition.score
    from competition as a , athlete
    where 5=(select sum (distinct competition.score)
	     from competition as b
             where a.score <=b.score)
             

Merci Drandt a ta contribution
0
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
8 janv. 2010 à 13:13
Bonjour,

Je n'ai pas controlé ta requête d'un point de vue pertinence, mais pour la syntaxe : tu dois faire référence aux ALIAS et pas à la table d'origine dans tes SELECT ...
Sinon, Mysql n'a aucun moyen de savoir à quelle instance de table (a ou b dans ton exemple) tu fais référence ...

Ex de code corrigé (vérifie la pertinence des a VS b !)
select distinct athlete.nom,a.epreuve,athlete.prenom,a.score
    from competition a , athlete
    where 5=(select sum (distinct epreuve.score)
	     from competition b
             where a.score <=b.score)
             and 
             where b.sexe=athlete.sexe
             and 
             where b.epreuve =a.epreuve
group by a.epreuve


Bon courage
0