ต้องการรายชื่อลูกค้าทุกคนรวมผู้ที่ยังไม่เคยสั่งซื้อ แต่ 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 ตัดออกกลับมา