การกรองข้อมูลด้วย Subquery แบบรายการ
ในแบบฝึกหัดนี้ เป้าหมายคือสร้างรายชื่อทีมที่ไม่เคยลงเล่นเกมในบ้านของตัวเอง โดยใช้ subquery เพื่อดึงค่า hometeam_ID ที่ไม่ซ้ำกันจากตาราง match ที่ยังไม่ได้กรอง แล้วนำไป ยกเว้น ออกจากคอลัมน์ team_api_ID ในตาราง team
นอกจากการกรองด้วย subquery แบบค่าเดียว (scalar) แล้ว ยังสามารถสร้างรายการค่าจาก subquery เพื่อกรองข้อมูลตามเงื่อนไขที่ซับซ้อนได้อีกด้วย subquery ประเภทนี้จะสร้าง รายการอ้างอิงแบบหนึ่งคอลัมน์ ให้กับคิวรีหลัก ตราบใดที่ค่าในรายการตรงกับคอลัมน์ในตารางของคิวรีหลัก ก็ไม่จำเป็นต้องใช้ JOIN แม้ว่ารายการนั้นจะมาจากตารางอื่นก็ตาม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- สร้าง subquery ในส่วน
WHEREเพื่อดึงค่าhometeam_idที่ไม่ซ้ำกันทั้งหมดจากตารางmatch - เลือก
team_long_nameและteam_short_nameจากตารางteamแล้ว ยกเว้น ค่าทั้งหมดที่ได้จาก subquery ออกจากคิวรีหลัก
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Select the team long and short names
___,
___
FROM ___
-- Exclude all values from the subquery
WHERE team_api_id ___ ___
(___ DISTINCT ___ FROM ___);