Spojení CTE dohromady
Teď, když máš oba poddotazy identifikující domácí a hostující týmy, je čas přepsat dotaz tak, aby poddotazy home a away fungovaly jako Common Table Expressions (CTE). Všimni si, že hlavní dotaz obsahuje výraz SELECT DISTINCT. Bez omezení pouze na DISTINCT záznamy by se ti mohl každý odehraný zápas zobrazit vícekrát.
Pokračuj v sestavování dotazu, který vrátí všechny zápasy Manchesteru United v sezóně 2014/2015.
Toto cvičení je součástí kurzu
Manipulace s daty v SQL
Pokyny k cvičení
- Deklaruj CTE
homeaawaypřed hlavním dotazem. - Připoj CTE k tabulce zápasů pomocí
LEFT JOIN. - Vyber relevantní data z CTE do hlavního dotazu.
- V hlavním dotazu vyber datum z tabulky
match, názvy týmů z CTE a počty gólů domácích a hostů z tabulkymatch.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- 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');