From 53197123f9ee08313d85b7491d3a4ed30c48286a Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Fri, 5 Apr 2024 14:48:20 +0200 Subject: [PATCH] les requetes sont biens maintenant --- sql/script_requete.sql | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/sql/script_requete.sql b/sql/script_requete.sql index e46a351..bc3ca24 100644 --- a/sql/script_requete.sql +++ b/sql/script_requete.sql @@ -25,11 +25,11 @@ SELECT ( -- "les phases de tournoi (nom et année de tournoi, niveau de phase) jouées et pour lesquelles s’est qualifié -- l’utilisateur courant. Le résultat sera trié sur les années selon l’ordre antéchronologique puis sur les niveaux -- de phase selon l’ordre lexicographique inverse". -SELECT T.nom, YEAR(T.date_deb), Ph.niveau +SELECT T.nom, YEAR(T.date_deb), niveau FROM participe Pa - JOIN phase Ph USING(idtournoi) + JOIN phase Ph USING(idtournoi, niveau) JOIN tournoi T USING(idtournoi) -WHERE Pa.idjoueur = ? AND Pa.est_qualifie +WHERE Pa.idjoueur = ? AND Pa.est_qualifie AND Pa.a_joue ORDER BY T.date_deb DESC, Ph.niveau DESC; @@ -38,7 +38,13 @@ ORDER BY T.date_deb DESC, Ph.niveau DESC; --"le nombre d’équipes classées premières des classements et dont aucun des membres n’est premier dans -- un classement individuel". -SELECT idC FROM donnees_fournies.classement_equipe WHERE rang = 1; +WITH equipes_top_1 AS + (SELECT idequipe FROM classement_equipe WHERE rang = 1) + +, equipes_avec_bon_joueur AS + (SELECT DISTINCT idequipe FROM classement_individuel JOIN joueur USING(idjoueur) WHERE rang = 1) + +SELECT COUNT(*) AS nb_equipes FROM equipes_top_1 ET1 WHERE NOT EXISTS (SELECT * FROM equipes_avec_bon_joueur EBJ WHERE ET1.idequipe = EBJ.idequipe); @@ -48,8 +54,8 @@ SELECT idC FROM donnees_fournies.classement_equipe WHERE rang = 1; WITH participants_tournois AS (SELECT idtournoi, COUNT(idtournoi) AS nb FROM participe - JOIN tournoi USING(idtournoi) - WHERE YEAR(date_deb) >= (YEAR(NOW()) - 3) + JOIN tournoi (idtournoi) + AND YEAR(T.date_deb) >= (YEAR(NOW()) - 3) GROUP BY idtournoi) SELECT AVG(nb) AS average FROM participants_tournois; @@ -60,13 +66,13 @@ SELECT AVG(nb) AS average FROM participants_tournois; -- "Donner le nom et le prénom des joueurs classés de manière individuelle dans le top 5 d’au moins 2 -- classements de portée nationale". SELECT DISTINCT J.nom, J.prenom FROM joueur J - JOIN donnees_fournies.classement_individuel CI1 ON J.idjoueur = CI1.idJ - JOIN donnees_fournies.classement_individuel CI2 ON J.idjoueur = CI2.idJ - JOIN donnees_fournies.classement C1 ON C1.idC = CI1.idC - JOIN donnees_fournies.classement C2 ON C2.idC = CI2.idC + JOIN classement_individuel CI1 ON J.idjoueur = CI1.idjoueur + JOIN classement_individuel CI2 ON J.idjoueur = CI2.idjoueur + JOIN classement C1 ON C1.idclassement = CI1.idclassement + JOIN classement C2 ON C2.idclassement = CI2.idclassement WHERE CI1.rang >= 5 AND CI2.rang >= 5 - AND C1.portée = "nationale" AND C2.portée = "nationale" - AND CI1.idc < CI2.idC; + AND C1.portee = "nationale" AND C2.portee = "nationale" + AND CI1.idclassement < CI2.idclassement;