Introduction
We use multiple LEFT JOINs to combine data from several tables, even if some tables don't have matching records. This helps us see all main data with related details.
Jump into concepts and practice - no test required
SELECT columns FROM table1 LEFT JOIN table2 ON table1.key = table2.key LEFT JOIN table3 ON table1.key = table3.key;
SELECT customers.name, orders.id FROM customers LEFT JOIN orders ON customers.id = orders.customer_id;
SELECT employees.name, departments.name, projects.name FROM employees LEFT JOIN departments ON employees.department_id = departments.id LEFT JOIN projects ON employees.project_id = projects.id;
CREATE TABLE authors (id INT, name VARCHAR(20)); CREATE TABLE books (id INT, title VARCHAR(30), author_id INT); CREATE TABLE reviews (id INT, book_id INT, rating INT); INSERT INTO authors VALUES (1, 'Alice'), (2, 'Bob'); INSERT INTO books VALUES (1, 'Book A', 1), (2, 'Book B', 1), (3, 'Book C', 2); INSERT INTO reviews VALUES (1, 1, 5), (2, 1, 4), (3, 3, 3); SELECT authors.name AS author, books.title AS book, reviews.rating FROM authors LEFT JOIN books ON authors.id = books.author_id LEFT JOIN reviews ON books.id = reviews.book_id ORDER BY authors.name, books.title;
LEFT JOIN clauses in a single SQL query?orders, customers, and payments?users(id, name),posts(id, user_id, title),comments(id, post_id, content)SELECT u.name, p.title, c.content FROM users u LEFT JOIN posts p ON u.id = p.user_id LEFT JOIN comments c ON p.id = c.post_id ORDER BY u.id, p.id, c.id;
SELECT a.id, b.name, c.status FROM tableA a LEFT JOIN tableB b ON a.id = b.a_id LEFT JOIN tableC c ON b.id = c.b_id WHERE c.status = 'active';
employees(id, name, department_id),departments(id, dept_name),projects(id, dept_id, project_name),tasks(id, project_id, task_name).