Bonjour à tous et à toutes,
Je me permet de poster mon probleme car cela fais 3 jours que je tourne en rond et je ne trouve pas la sortie... J'ai bien sur tenter de trouver une réponse sur le web, mais cela doit etre bien caché car je ne trouve pas...
Cela va sembler banal pour certaines pointures du SQL, mais pour moi, ce n'est pas aussi simple qu'il n'y parait.
Voici mon probleme...
Je tente de créer un site sur des championnats sportifs
J'ai une table que l'on va appeller classement, et qui contient des infos comme la journée, les points, l'ID de l'équipe etc....
Pour sortir un classement je fais un SELECT tout bete avec les ORDER BY qui vont bien et qui me sors le classement des équipes de la 1ere à la dernière. Le classement se fait par points, puis à la différence de but et enfin par nombre de buts marqués.
Je donne ici le nom des champs pour que l'on s'y retrouve mieux
id_team => ID de l'équipe
id_day => ID de la journée jouée
pts => Points de l'équipe
bp => Buts Placés (buts marqués)
bc => Buts Concédés (buts pris)
Voic mon probleme :
J'aimerais sortir une requete qui me donne pour une équipe X son classement journée après journées (ie : Journée 1 => 3eme, journée 2 => 6eme, Journée 3 => 6ème, Journée 4 => 10ème etc...)
J'ai trouvé un bout de requète que j'ai réadapté et qui ma foi fonctionne, mais qui n'est pas réaliste, c'est à dire que cela me remonte des trucs, mais c'est faux... C'est qu'il doit y avoir une erreur quelque part :
Voici ce que j'ai :
SELECT C1.id_team, count(C2.id_team) AS rang, C1.pts FROM classement AS C1 JOIN classement AS C2 ON C1.pts <= C2.pts WHERE C1.id_team = 11 AND C1.id_day = C2.id_day GROUP BY C1.id_day
Ce que je n'arrive pas à faire, c'est avoir la bonne place de l'équipe dans le classement. Je me suis dis que c'est surement parce que dans le SELECT j'ai mes conditions dans le ORDER BY qui réorganise bien le tout, et que je ne les ai pas ici... Alors j'ai éssaye :
SELECT C1.id_team, count(C2.id_team) AS rang, C1.pts FROM classement AS C1 JOIN classement AS C2 ON C1.pts <= C2.pts AND (C1.bp - C1.bc) < (C2.bp - C2.bc) WHERE C1.id_team = 11 AND C1.id_day = C2.id_day GROUP BY C1.id_day
Mais cela me remonte des trucs encore plus fantaisiste.
Bref je tourne en rond et je n'y arrive pas...
Si une bonne ame charitable, experte en SQL pouvait m'aider....
Merci d'avance
**EDIT** Modérateur (TheRec): Merci d'utiliser les BBCodes pour présenter du code, en l'occurrence la balise SQL ou CODE