0
0
SQLquery~20 mins

Joining more than two tables in SQL - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Master of Joining Multiple Tables
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Output of joining three tables with INNER JOIN
Given the tables Employees, Departments, and Locations, what is the output of the following SQL query?
SELECT e.name, d.department_name, l.city
FROM Employees e
INNER JOIN Departments d ON e.department_id = d.id
INNER JOIN Locations l ON d.location_id = l.id
ORDER BY e.name;
SQL
CREATE TABLE Employees (id INT, name VARCHAR(50), department_id INT);
CREATE TABLE Departments (id INT, department_name VARCHAR(50), location_id INT);
CREATE TABLE Locations (id INT, city VARCHAR(50));

INSERT INTO Employees VALUES (1, 'Alice', 10), (2, 'Bob', 20), (3, 'Charlie', 10);
INSERT INTO Departments VALUES (10, 'Sales', 100), (20, 'Engineering', 200);
INSERT INTO Locations VALUES (100, 'New York'), (200, 'San Francisco');
A[{'name': 'Alice', 'department_name': 'Sales', 'city': 'New York'}, {'name': 'Bob', 'department_name': 'Engineering', 'city': 'San Francisco'}, {'name': 'Charlie', 'department_name': 'Sales', 'city': 'New York'}]
B[{'name': 'Alice', 'department_name': 'Sales', 'city': 'San Francisco'}, {'name': 'Bob', 'department_name': 'Engineering', 'city': 'New York'}, {'name': 'Charlie', 'department_name': 'Sales', 'city': 'San Francisco'}]
C[{'name': 'Alice', 'department_name': 'Sales', 'city': 'New York'}, {'name': 'Charlie', 'department_name': 'Sales', 'city': 'New York'}]
D[{'name': 'Bob', 'department_name': 'Engineering', 'city': 'San Francisco'}]
Attempts:
2 left
💡 Hint
Think about how INNER JOIN works: it only includes rows where the join condition matches in all tables.
📝 Syntax
intermediate
1:30remaining
Identify the syntax error in joining three tables
Which option contains a syntax error when joining three tables Orders, Customers, and Products to get order details?
SQL
SELECT o.order_id, c.customer_name, p.product_name
FROM Orders o
JOIN Customers c ON o.customer_id = c.id
JOIN Products p ON o.product_id = p.id;
ASELECT o.order_id, c.customer_name, p.product_name FROM Orders o INNER JOIN Customers c ON o.customer_id = c.id JOIN Products p ON o.product_id = p.id;
BSELECT o.order_id, c.customer_name, p.product_name FROM Orders o JOIN Customers c ON o.customer_id = c.id JOIN Products p o.product_id = p.id;
CSELECT o.order_id, c.customer_name, p.product_name FROM Orders o JOIN Customers c ON o.customer_id = c.id INNER JOIN Products p ON o.product_id = p.id;
DSELECT o.order_id, c.customer_name, p.product_name FROM Orders o JOIN Customers c ON o.customer_id = c.id JOIN Products p ON o.product_id = p.id;
Attempts:
2 left
💡 Hint
Check the JOIN syntax carefully, especially the ON clause.
optimization
advanced
2:30remaining
Optimizing a query joining four tables
You have four tables: Sales, Customers, Products, and Stores. Which query is the most efficient to get sales details including customer name, product name, and store location?
ASELECT s.sale_id, c.name, p.name, st.location FROM Sales s LEFT JOIN Customers c ON s.customer_id = c.id LEFT JOIN Products p ON s.product_id = p.id LEFT JOIN Stores st ON s.store_id = st.id;
BSELECT s.sale_id, c.name, p.name, st.location FROM Sales s, Customers c, Products p, Stores st WHERE s.customer_id = c.id AND s.product_id = p.id AND s.store_id = st.id;
CSELECT s.sale_id, c.name, p.name, st.location FROM Sales s JOIN Customers c ON s.customer_id = c.id JOIN Products p ON s.product_id = p.id JOIN Stores st ON s.store_id = st.id;
DSELECT s.sale_id, c.name, p.name, st.location FROM Sales s CROSS JOIN Customers c CROSS JOIN Products p CROSS JOIN Stores st WHERE s.customer_id = c.id AND s.product_id = p.id AND s.store_id = st.id;
Attempts:
2 left
💡 Hint
Consider the clarity and performance of JOIN syntax versus older comma joins and CROSS JOINs.
🧠 Conceptual
advanced
1:30remaining
Understanding join types with three tables
You join three tables: A, B, and C. If you want to keep all rows from A even if there are no matching rows in B or C, which join type should you use?
AUse INNER JOIN between A and B, then INNER JOIN between B and C.
BUse FULL OUTER JOIN between A and B, then FULL OUTER JOIN between B and C.
CUse RIGHT JOIN from A to B, then RIGHT JOIN from B to C.
DUse LEFT JOIN from A to B, then LEFT JOIN from B to C.
Attempts:
2 left
💡 Hint
Think about which join keeps all rows from the left table regardless of matches.
🔧 Debug
expert
2:30remaining
Debugging incorrect results from joining three tables
You run this query joining three tables but get fewer rows than expected:
SELECT e.name, d.department_name, p.project_name
FROM Employees e
JOIN Departments d ON e.department_id = d.id
JOIN Projects p ON e.id = p.employee_id
WHERE d.location = 'New York';

What is the most likely reason for missing rows?
ASome employees in New York departments have no projects, so INNER JOIN excludes them.
BThe WHERE clause filters out employees not in New York, causing no rows to show.
CThe JOIN condition between Employees and Departments is incorrect, causing no matches.
DThe Projects table has no employee_id column, causing a syntax error.
Attempts:
2 left
💡 Hint
Consider how INNER JOIN behaves when there is no matching row in the joined table.