รายงานต้องแสดงสินค้าทุกชิ้นพร้อมจำนวนคำสั่งซื้อ แม้สินค้าที่ยังไม่เคยถูกสั่งซื้อก็ต้องแสดงเป็น 0 รูปแบบใดรักษาสินค้าครบและนับได้ถูกต้อง
กproducts p INNER JOIN orders o ON o.product_id = p.id แล้วใช้ COUNT(*)
ขproducts p LEFT JOIN orders o ON o.product_id = p.id แล้วใช้ COUNT(o.id)
คorders o LEFT JOIN products p ON p.id = o.product_id แล้วใช้ COUNT(p.id)
งproducts p CROSS JOIN orders o แล้วใช้ COUNT(o.id)
เฉลยอธิบาย
LEFT JOIN รักษาทุกแถวจาก products และเติมค่า NULL ทาง orders เมื่อไม่พบคู่ การใช้ COUNT(o.id) นับเฉพาะรหัสคำสั่งซื้อที่ไม่เป็น NULL จึงได้ 0 สำหรับสินค้าที่ไม่มีคำสั่งซื้อ ขณะที่ INNER JOIN ตัดสินค้าเหล่านั้นและ COUNT(*) จะนับแถวที่เติมขึ้นมาด้วย