jjg65
Messages postés28Date d'inscriptionmercredi 23 mars 2011StatutMembreDernière intervention16 août 2011
-
16 août 2011 à 23:01
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
17 août 2011 à 11:51
Bonsoir,
A partir d'une table (voir tableau 1) contenant des données propres aux résultats de rencontres de football je souhaiterais établir une requête permettant d'établir le classement général d'une journée de championnat de football.
J'ai écrit une requête permettant d'établir le classement général portant sur les 3 journées de championnat (voir requête 2) et requête addition pour le résultat. La requête fonctionne correctement.
La requête 1 me permet d'établir le classement général d'une journée de championnat en particulier mais ça n'a aucun intérêt dans la conception de mon programme.
Ce que je recherche si j'ai 3 journées de championnats jouées est d'établir le classement général pour les 2 premières journée en faisant abstraction de la 3 ème.
Je ne réussis pas à trouver la bonne requête.
J'espérais à travers la requête 3 pouvoir établir le classement général pour les 2 premières journées de championnat. Malheureusement la requête affiche 8 lignes (à la place de 4) et les équipes apparaissent 2 fois et l'opération des sommes ne fonctionne plus.
Quelqu'un aurait-il une idée ?
Merci d'avance.
tableau 1 Journee Championnat Equipe Joué Gagné Perdu Nul But Pour But Contre Point
1 A Oui 1 0 0 3 1 3
1 B Oui 0 1 0 1 3 0
1 C Oui 0 0 1 2 2 1
1 D Oui 0 0 1 2 2 1
2 A Oui 1 0 0 1 0 3
2 B Oui 1 0 0 5 1 3
2 C Oui 0 1 0 0 1 0
2 D Oui 0 1 0 1 5 0
3 A Oui 0 0 1 2 2 1
3 B Oui 0 1 0 0 1 0
3 C Oui 1 0 0 1 0 3
3 D Oui 0 0 1 2 2 1
Requête addition Journee Championnat Equipe Joué Gagné Perdu Nul But Pour But Contre Point
3 A Oui 2 0 1 6 3 7
3 C Oui 1 0 1 3 3 4
3 B Oui 1 2 0 6 5 3
3 D Oui 0 0 2 5 9 2
requête 1 SELECT DISTINCT (TableClassementChampionnatBelgique.IdClub) AS Expr1, Count(TableClassementChampionnatBelgique.JoueTotal) AS CompteDeJoueTotal, Sum(TableClassementChampionnatBelgique.TotalVictoires) AS SommeDeTotalVictoires, Sum(TableClassementChampionnatBelgique.TotalDefaites) AS SommeDeTotalDefaites, Sum(TableClassementChampionnatBelgique.TotalNuls) AS SommeDeTotalNuls, Sum(TableClassementChampionnatBelgique.TotalButsPour) AS SommeDeTotalButsPour, Sum(TableClassementChampionnatBelgique.TotalButsContre) AS SommeDeTotalButsContre, Sum(TableClassementChampionnatBelgique.TotalPointGeneral) AS SommeDeTotalPointGeneral
FROM TableClassementChampionnatBelgique
GROUP BY TableClassementChampionnatBelgique.IdClub, TableClassementChampionnatBelgique.NumeroJourneeChampionnat
HAVING (((TableClassementChampionnatBelgique.NumeroJourneeChampionnat)=2))
ORDER BY Sum(TableClassementChampionnatBelgique.TotalPointGeneral) DESC;
requête 2 SELECT DISTINCT (TableClassementChampionnatBelgique.IdClub) AS Expr1, Count(TableClassementChampionnatBelgique.JoueTotal) AS CompteDeJoueTotal, Sum(TableClassementChampionnatBelgique.TotalVictoires) AS SommeDeTotalVictoires, Sum(TableClassementChampionnatBelgique.TotalDefaites) AS SommeDeTotalDefaites, Sum(TableClassementChampionnatBelgique.TotalNuls) AS SommeDeTotalNuls, Sum(TableClassementChampionnatBelgique.TotalButsPour) AS SommeDeTotalButsPour, Sum(TableClassementChampionnatBelgique.TotalButsContre) AS SommeDeTotalButsContre, Sum(TableClassementChampionnatBelgique.TotalPointGeneral) AS SommeDeTotalPointGeneral
FROM TableClassementChampionnatBelgique
GROUP BY TableClassementChampionnatBelgique.IdClub
ORDER BY Sum(TableClassementChampionnatBelgique.TotalPointGeneral) DESC;
requête 3 SELECT DISTINCT (TableClassementChampionnatBelgique.IdClub) AS Expr1, Count(TableClassementChampionnatBelgique.JoueTotal) AS CompteDeJoueTotal, Sum(TableClassementChampionnatBelgique.TotalVictoires) AS SommeDeTotalVictoires, Sum(TableClassementChampionnatBelgique.TotalDefaites) AS SommeDeTotalDefaites, Sum(TableClassementChampionnatBelgique.TotalNuls) AS SommeDeTotalNuls, Sum(TableClassementChampionnatBelgique.TotalButsPour) AS SommeDeTotalButsPour, Sum(TableClassementChampionnatBelgique.TotalButsContre) AS SommeDeTotalButsContre, Sum(TableClassementChampionnatBelgique.TotalPointGeneral) AS SommeDeTotalPointGeneral
FROM TableClassementChampionnatBelgique
GROUP BY TableClassementChampionnatBelgique.IdClub, TableClassementChampionnatBelgique.NumeroJourneeChampionnat
HAVING (((TableClassementChampionnatBelgique.NumeroJourneeChampionnat)>0 And (TableClassementChampionnatBelgique.NumeroJourneeChampionnat)<3))
ORDER BY Sum(TableClassementChampionnatBelgique.TotalPointGeneral) DESC;
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 août 2011 à 11:51
Salut
Première chose : allège tes requètes avec ces deux astuces :
- Si tu ne t'adresses qu'à une seule table, il n'est pas nécessaire de répéter le nom de la table devant chaque champ.
- Comme tu utilises des noms de tables très long qui pénalisent la compréhension, utilise des alias pour le nom des tables, exemple :
Select t1.champ1, t2.champ2
From TableAvecNomTresLong t1,
EncoreUnNomTresLong t2
Where t1.champx = t2.champx
Avec ça, ton code respirera un peu et ça te facilitera le debugage.
Pour ta question, essaye de remplacer HAVING par WHERE (et en le plaçant entre le FROM et le GROUP BY)
FROM TableClassementChampionnatBelgique t1
WHERE t1.NumeroJourneeChampionnat between 1 and 2
GROUP BY t1.IdClub, t1.NumeroJourneeChampionnat
ORDER BY Sum(t1.TotalPointGeneral) DESC
PS : Evite aussi les niveaux de parenthèses inutiles
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)