CTEs को साथ में जोड़ना
अब जब आपने home और away टीम के प्रतिद्वंद्वियों की पहचान करने वाली दो subqueries बना ली हैं, तो अपनी क्वेरी को इस तरह व्यवस्थित करने का समय है कि home और away subqueries को Common Table Expressions (CTEs) के रूप में प्रयोग किया जाए। आप देखेंगे कि मुख्य क्वेरी में SELECT DISTINCT वाक्यांश शामिल है। अगर आप केवल DISTINCT मैचों की पहचान नहीं करेंगे, तो हर खेले गए गेम के लिए एक duplicate रिकॉर्ड लौट सकता है।
क्वेरी को आगे बढ़ाइए ताकि 2014/2015 सीज़न में Manchester United द्वारा खेले गए सभी मैच निकाले जा सकें।
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL में Data Manipulation
अभ्यास निर्देश
- मुख्य क्वेरी से पहले
homeऔरawayCTEs घोषित करें। - अपनी CTEs को
LEFT JOINके साथ match टेबल से जोड़ें। - CTEs से संबंधित डेटा को मुख्य क्वेरी में select करें।
- मुख्य क्वेरी में तारीख
matchसे, टीम के नाम CTEs से, और home/away गोलmatchसे select करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- 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');