Bonjour,
Voici la Structure de BD:
Pièce jointe 85497
Cette requette Récupere le classement d'une poole:
J'ai Créer une Vue avec cette requette :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT nation.nat_poule, nation.nat_nom, SUM( case when ((joue.nat_essai*5)+(joue.nat_trans*2)+(joue.nat_penal*3)+(joue.nat_drop*3)) > ((joue2.nat_essai*5)+(joue2.nat_trans*2)+(joue2.nat_penal*3)+(joue2.nat_drop*3)) then 1 else 0 end) AS Victoire FROM public.joue INNER JOIN public.nation ON nation.nat_id = joue.nat_id INNER JOIN public.joue joue2 ON joue.mat_id = joue2.mat_id AND joue.nat_id <> joue2.nat_id INNER JOIN public.nation nation2 ON joue2.nat_id = nation2.nat_id WHERE nation.nat_poule = 'A' GROUP BY nation.nat_poule, nation.nat_nom ORDER BY nation.nat_poule, Victoire DESC
1. Quand j'ai exécuté cette vue il m'a dit (La requête a été exécutée avec succès en 42 ms, mais ne renvoie aucun résultat) Est-ce que c'est normal qu'elle ne renvoie rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 CREATE OR REPLACE VIEW classement (nat_poule, nat_nom, Victoire) AS ( SELECT nation.nat_poule, nation.nat_nom, SUM( case when ((joue.nat_essai*5)+(joue.nat_trans*2)+(joue.nat_penal*3)+(joue.nat_drop*3)) > ((joue2.nat_essai*5)+(joue2.nat_trans*2)+(joue2.nat_penal*3)+(joue2.nat_drop*3)) then 1 else 0 end) AS Victoire FROM public.joue INNER JOIN public.nation ON nation.nat_id = joue.nat_id INNER JOIN public.joue joue2 ON joue.mat_id = joue2.mat_id AND joue.nat_id <> joue2.nat_id INNER JOIN public.nation nation2 ON joue2.nat_id = nation2.nat_id WHERE nation.nat_poule = 'A' GROUP BY nation.nat_poule, nation.nat_nom ORDER BY nation.nat_poule, Victoire DESC );
2. J'aimerais récuperer le premier nation de chaque poole j'ai pensé à faire un MAX de Victoire mais il accepte pas les fonctions imbriquées sinon j'ai pensé à utiliser la vue mais je ne sais pas comment je peux récupérer le MAX et Aussi comment lui passer des parametres
Merci.
Partager