CommencerCommencer gratuitement

Regrouper les CTE

Maintenant que vous avez créé les deux sous-requêtes identifiant les équipes à domicile et à l’extérieur, il est temps de réorganiser votre requête avec les sous-requêtes home et away en tant qu’expressions de table communes. Vous remarquerez que la requête principale comprend l’expression SELECT DISTINCT. Si vous n'identifiez pas uniquement les matchs DISTINCT, vous risquez de renvoyer un enregistrement en double pour chaque match joué.

Poursuivez l’élaboration de la requête pour extraire tous les matchs joués par Manchester United au cours de la saison 2014/2015.

Cet exercice fait partie du cours

Manipulation de données en SQL

Afficher le cours

Instructions

  • Déclarez les CTE home et away avant votre requête principale.
  • Reliez vos CTE à la table des matchs à l’aide d’unLEFT JOIN.
  • Sélectionnez les données pertinentes des CTE dans la requête principale.
  • Sélectionnez la date à partir de match, les noms des équipes à partir des CTE et les buts à domicile/à l’extérieur à partir de match dans la requête principale.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

-- 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 team names, the date and goals
SELECT DISTINCT
    ___,
    ___.___ AS home_team,
    ___.___ AS away_team,
    ___,
    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');
Modifier et exécuter le code