Bird
0
0

Which query achieves this?

hard📝 Application Q8 of 15
SQL - LEFT and RIGHT JOIN
You have two tables: Customers and Orders. Some customers have no orders. You want a list of all customers with their order counts, showing zero for customers without orders. Which query achieves this?
ASELECT Customers.name, COUNT(Orders.id) FROM Customers LEFT OUTER JOIN Orders ON Customers.id = Orders.customer_id GROUP BY Customers.name;
BSELECT Customers.name, COUNT(Orders.id) FROM Customers INNER JOIN Orders ON Customers.id = Orders.customer_id GROUP BY Customers.name;
CSELECT Customers.name, COUNT(Orders.id) FROM Orders LEFT OUTER JOIN Customers ON Customers.id = Orders.customer_id GROUP BY Customers.name;
DSELECT Customers.name, COUNT(*) FROM Customers RIGHT OUTER JOIN Orders ON Customers.id = Orders.customer_id GROUP BY Customers.name;
Step-by-Step Solution
Solution:
  1. Step 1: Identify join type needed

    LEFT OUTER JOIN keeps all customers, including those without orders.
  2. Step 2: Use COUNT on Orders.id

    COUNT(Orders.id) counts orders per customer; zero if no orders due to NULLs.
  3. Final Answer:

    SELECT Customers.name, COUNT(Orders.id) FROM Customers LEFT OUTER JOIN Orders ON Customers.id = Orders.customer_id GROUP BY Customers.name; -> Option A
  4. Quick Check:

    LEFT OUTER JOIN + COUNT(Orders.id) = zero for no orders [OK]
Quick Trick: Use LEFT OUTER JOIN and COUNT(column) for zero counts [OK]
Common Mistakes:
MISTAKES
  • Using INNER JOIN excludes customers without orders
  • Counting * instead of column causes wrong counts
  • Reversing join order changes results

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More SQL Quizzes