Sätt ihop CTE:erna
Nu när du har skapat de två underfrågor som identifierar hem- och bortamotståndarna är det dags att strukturera om din fråga med home- och away-underfrågorna som Common Table Expressions (CTE:er). Lägg märke till att huvudfrågan innehåller frasen SELECT DISTINCT. Utan att filtrera på enbart DISTINCT-matcher riskerar du att få dubbla rader för varje spelad match.
Fortsätt att bygga frågan för att hämta alla matcher som Manchester United spelade under säsongen 2014/2015.
Den här övningen är en del av kursen
Datahantering i SQL
Övningsinstruktioner
- Deklarera CTE:erna
homeochawayföre huvudfrågan. - Koppla dina CTE:er till matchtabellen med
LEFT JOIN. - Välj relevant data från CTE:erna in i huvudfrågan.
- Välj datum från
match, lagnamn från CTE:erna samt hem- och bortamål frånmatchi huvudfrågan.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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');