You want to list all customers and their orders, but some customers may have no orders. Which query is correct?
hard📝 Application Q9 of 15
SQL - LEFT and RIGHT JOIN
You want to list all customers and their orders, but some customers may have no orders. Which query is correct?
ASELECT Customers.name, Orders.id FROM Customers RIGHT JOIN Orders ON Customers.id = Orders.customer_id;
BSELECT Customers.name, Orders.id FROM Customers LEFT JOIN Orders ON Customers.id = Orders.customer_id;
CSELECT Customers.name, Orders.id FROM Orders LEFT JOIN Customers ON Orders.customer_id = Customers.id;
DSELECT Customers.name, Orders.id FROM Orders RIGHT JOIN Customers ON Orders.customer_id = Customers.id;
Step-by-Step Solution
Solution:
Step 1: Identify which table to keep all rows from
We want all customers listed, even if no orders, so keep all Customers rows.
Step 2: Choose JOIN type
LEFT JOIN keeps all rows from the left table (Customers) and matches from Orders.
Step 3: Verify query syntax
SELECT Customers.name, Orders.id FROM Customers LEFT JOIN Orders ON Customers.id = Orders.customer_id; uses Customers LEFT JOIN Orders ON Customers.id = Orders.customer_id, which is correct.
Final Answer:
SELECT Customers.name, Orders.id FROM Customers LEFT JOIN Orders ON Customers.id = Orders.customer_id; -> Option B
Quick Check:
Keep all customers = LEFT JOIN with Customers as left table [OK]
Quick Trick:LEFT JOIN keeps all left table rows, unmatched right columns NULL [OK]
Common Mistakes:
MISTAKES
Using RIGHT JOIN instead of LEFT JOIN
Swapping table order in JOIN
Assuming INNER JOIN keeps unmatched rows
Master "LEFT and RIGHT JOIN" in SQL
9 interactive learning modes - each teaches the same concept differently