Probleme de requete

Probleme de requete - SQL/NoSQL - Programmation

Marsh Posté le 27-10-2006 à 18:23:17    

Bonjour à tous!  
Donc voila j'ai créer une base de donnée sous access comme suit:
table:
EQUIPE avec comme clé primaire "equipe".(seul champ)
JOURNEE avec comme clé primaire "journee".(seul champ)
RENCONTRE avec comme clé primaire et étrangère "equipe" de EQUIPE, "equipe2" de EQUIPE(association réflexive), "journee" de JOURNEE et comme champ "butsmarquéséquipe1"(nombre de buts marqué par "equipe" ) et "butsmarquéséquipe2"(nombre de buts marqués par "équipe2" )
 
Donc la traduction serait: une équipe rencontre une autre équipe à une certaine journée.
 
A partir de cela, je souhaiterait réaliser une requete me permettant d'avoir le nombre de points par équipe sachant:
1match gagné = 3 points
1match perdu = 1 points
 
J'ai tout d'abord réalisé une requete me permettant davoir le nombre de points pour une équipe:
SELECT equipe, (SELECT count(equipe)*3  
                       FROM rencontre  
                       WHERE butsmarquéséquipe1>butsmarquéséquipe2 And equipe='om')  
                      +  
                      (SELECT count(equipe)*3  
                       FROM rencontre  
                       WHERE butsmarquéséquipe2>butsmarquéséquipe1 And equipe2='om')             +  
                      (SELECT count(equipe)*1
                       FROM rencontre  
                       WHERE butsmarquéséquipe1=butsmarquéséquipe2 And ( equipe='om' or  equipe2='om'))
FROM rencontre
WHERE equipe='om'
GROUP BY equipe;
 
Cette requete fonctionne mais lorsque j'essaye de faire une requete pour afficher toutes les équipes avec leurs points je n'y arrive pas!
On m'a dit alors qu'il fallait peut-etre utiliser un "LEFT JOIN" et on est arriver a cette requete(les matchs nuls ne sont pas traités, c'est juste une ébauche):
SELECT E.equipe, COUNT(A.equipe)*3
FROM equipe  E LEFT JOIN (SELECT equipe2 FROM rencontre WHERE butsmarquéséquipe1 < butsmarquéséquipe2) B
                ON E.equipe = B.equipe2              
               LEFT JOIN (SELECT equipe FROM rencontre WHERE butsmarquéséquipe1 > butsmarquéséquipe2) A  
                ON E.equipe = A.equipe GROUP BY E.equipe;
 
Cette requete ne fonctionne pas, cela affiche: "erreur de sybtaxe opérateur absent dans: E.equipe = B.equipe2 LEFT JOIN (SELECT equipe FROM rencontre WHERE butsmarquéséquipe1 > butsmarquéséquipe2) A ON E.equipe = A.equipe GROUP BY E.equipe;"
On a chercher mais malheureusement pas trouver!
 
Donc voila j'aimerai savoir s'il faut bien utiliser un LEFT JOIN et si vous n'auriez pas une requete a me proposer pour résoudre ce probleme!!
Merci d'avance!

Reply

Marsh Posté le 27-10-2006 à 18:23:17   

Reply

Marsh Posté le 27-10-2006 à 18:24:22    

Dsl une modification:
1match perdu = 0point
un match nul = 1 points
voila
merci!

Reply

Marsh Posté le 28-10-2006 à 09:01:35    

Quel SGBD ?
 
Normalement tu peux t'en sortir avec des CASE ou IIF ou équivalent ;)

Reply

Marsh Posté le 28-10-2006 à 10:28:58    

PROBLEME RESOLU, on ma aider et il fallait faire en faite cette requete:
 
SELECT equipe,  
       (SELECT count(*)*3  
          FROM rencontre RG1
         WHERE RG1.equipe = E.equipe
           AND butsmarquéséquipe1 > butsmarquéséquipe2)
         +  
       (SELECT count(*)*3  
          FROM rencontre RG2
         WHERE RG2.equipe2 = E.equipe
           AND butsmarquéséquipe2 > butsmarquéséquipe1)
         +  
       (SELECT count(*)*1
          FROM rencontre RN
         WHERE butsmarquéséquipe1 = butsmarquéséquipe2
           AND (E.equipe = RN.equipe OR E.equipe = RN.equipe2))  
  FROM Equipe E
GROUP BY equipe;
 
Elle était proche de ma 1ere et assez simple mais je n'avais pas trouver! Et finalement c'est bien ce que je pensai, pas besoin de LEFT JOIN!
Merci quand meme Beeggee!

Reply

Sujets relatifs:

Leave a Replay

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