Объединяем CTE вместе
Теперь, когда вы создали два подзапроса, определяющих соперников для домашних и выездных матчей, пришло время реорганизовать запрос, используя подзапросы home и away в качестве Common Table Expressions (CTE). Обратите внимание, что основной запрос содержит конструкцию SELECT DISTINCT. Без отбора только уникальных (DISTINCT) матчей вы можете получить дублирующиеся записи для каждой сыгранной игры.
Продолжайте формировать запрос, чтобы извлечь все матчи «Манчестер Юнайтед» в сезоне 2014/2015.
Это упражнение является частью курса
Манипуляции с данными в SQL
Инструкции к упражнению
- Объявите CTE
homeиawayперед основным запросом. - Присоедините CTE к таблице матчей с помощью
LEFT JOIN. - Выберите нужные данные из CTE в основной запрос.
- В основном запросе выберите дату из таблицы
match, названия команд из CTE, а также голы домашней и выездной команды из таблицыmatch.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- 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');