Assembler les CTE
Maintenant que vous avez créé les deux sous-requêtes qui identifient les adversaires à domicile et à l'extérieur, il est temps de réorganiser votre requête en transformant les sous-requêtes home et away en expressions de table communes (CTE). Vous remarquerez que la requête principale contient l'expression SELECT DISTINCT. Sans restreindre aux matchs DISTINCT, vous pourriez renvoyer un doublon pour chaque rencontre jouée.
Poursuivez la construction de la requête pour extraire tous les matchs disputés par Manchester United pendant la saison 2014/2015.
Cette activité fait partie du cours
Manipulation de données en SQL
Instructions de l’exercice
- Déclarez les CTE
homeetawayavant votre requête principale. - Joignez vos CTE à la table des matchs à l'aide d'un
LEFT JOIN. - Sélectionnez les données pertinentes des CTE dans la requête principale.
- Dans la requête principale, sélectionnez la date à partir de
match, les noms d'équipe depuis les CTE, ainsi que les buts à domicile et à l'extérieur à partir dematch.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- Set up the home team CTE
___ ___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
WHEN m.home_goal < m.away_goal THEN 'MU Loss'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
WHEN m.home_goal < m.away_goal THEN 'MU Win'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
___.___,
___.___ AS home_team_name,
___.___ AS away_team_name,
___.___,
m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
AND (home.team_long_name = 'Manchester United'
OR away.team_long_name = 'Manchester United');