salut,
ici que tu le fasses en procédural ou pas ça revient avant tout à construire ta requête qui sera encapsulé par la procédure (vu que tu veux que le résultat finale soit une procédure...
donc trouver les tables concernées, et quand des colonnes (foreign keys) les relie faire des jointures (inner join ou left join) sur la ou les colonnes concernées
dans ton modèle y a pas de quoi relier les compétitions aux championnats à moins que LC soit dans les compétitions alors un truc du genre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| delimiter $$
drop procedure if exists classement_comp$$
create procedure classement_comp(in nom varchar(255))
begin
select `equ`,sum(`score`) as `points`
from
((select e.nom_eq as `equ`,sum(m.score_d) as `score`
from matchs m
inner join compétition c on c.num_comp=m.num_comp and c.nom_comp=nom
left join équipe e on e.num_eq=m.num_eqd
group by `equ`)
union all
(select e.nom_eq as `equ`,sum(m.score_e) as `score`
from matchs m
inner join compétition c on c.num_comp=m.num_comp and c.nom_comp=nom
left join équipe e on e.num_eq=m.num_eqe
group by `equ`))
group by `equ`
order by `points` DESC;
end$$
delimiter ; |
donc la procédure te calcule le classement des équipes par leur points total remporté pour la compétition dont tu passes le nom en paramètre.
exemple:
call classement_comp('LC');
ce qui rentabilise ici l'utilisation d'une procédure 
attention je suis parti du fait que 'LC' est une compétition! à adapter si c'est pas le cas
Partager