ต้องการรายชื่อลูกค้าทุกคนรวมผู้ที่ยังไม่เคยสั่งซื้อ แต่ inner join ตัดคนกลุ่มหลังออก ควรเปลี่ยนอย่างไร?

ใช้ INNER JOIN ต่อไปและเพิ่ม ORDER BY เพื่อเลื่อนลูกค้าที่ไม่มีคำสั่งซื้อขึ้นก่อน
ใช้ CROSS JOIN แล้วกรองเฉพาะคู่ที่รหัสลูกค้าตรงกันในคำสั่ง WHERE
ใช้ RIGHT OUTER JOIN โดยวางตารางลูกค้าไว้ด้านซ้ายและคงทุกแถวด้านขวา
ใช้ LEFT OUTER JOIN โดยวางตารางลูกค้าไว้ด้านซ้ายที่ต้องคงทุกแถว

เฉลยอธิบาย

Left outer join คงทุกแถวของตารางด้านซ้ายแม้ไม่มีแถวที่ตรงกันด้านขวา ดังนั้นคำตอบที่เหมาะที่สุดคือ “ใช้ LEFT OUTER JOIN โดยวางตารางลูกค้าไว้ด้านซ้ายที่ต้องคงทุกแถว” ส่วนตัวลวงที่ใกล้เคียงที่สุดไม่ผ่านเพราะ ORDER BY ไม่ทำให้แถวที่ INNER JOIN ตัดออกกลับมา

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับระบบฐานข้อมูล (Database System) และ ระบบการบริหารจัดการข้อมูล (Database Management System)

ดูข้อสอบวิชานี้ทั้งหมด →