Menggabungkan CTE
Sekarang setelah Anda membuat dua subkueri yang mengidentifikasi lawan tim kandang dan tandang, saatnya menata ulang kueri Anda dengan subkueri home dan away sebagai Common Table Expressions (CTE). Anda akan melihat bahwa kueri utama menyertakan frasa SELECT DISTINCT. Tanpa membatasi hanya pada pertandingan DISTINCT, Anda bisa mendapatkan catatan duplikat untuk setiap pertandingan yang dimainkan.
Lanjutkan membangun kueri untuk mengekstrak semua pertandingan yang dimainkan oleh Manchester United pada musim 2014/2015.
Latihan ini adalah bagian dari kursus
Manipulasi Data di SQL
Petunjuk latihan
- Deklarasikan CTE
homedanawaysebelum kueri utama Anda. - Gabungkan CTE Anda ke tabel match menggunakan
LEFT JOIN. - Pilih data yang relevan dari CTE ke dalam kueri utama.
- Pada kueri utama, pilih tanggal dari
match, nama tim dari CTE, serta gol kandang/tandang darimatch.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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');