Joins Overview
Joins combine rows from two or more tables based on related columns. Use the right join type to include exactly the rows you need.
Joins combine rows from two or more tables based on related columns. Use the right join type to include exactly the rows you need.
Objective: Retrieve basic information from a single table. Think of it as a friendly introduction to your data!
SELECT column_one, column_two FROM your_table;
This query is like saying, "Hello, data!" by selecting specific columns from a single table. It’s straightforward but forms the foundation for more complex queries.
Objective: Discover relationships between tables. Perfect for finding matches!
SELECT t1.column_one, t2.column_two FROM table_one AS t1 INNER JOIN table_two AS t2 ON t1.common_column = t2.common_column;
An inner join is like a handshake between tables, showing only the rows where they agree on a common value. It’s ideal when both tables must contribute relevant data.
Objective: List all entries from one table, even if they don't have matches in another. No one gets left out!
SELECT t1.column_one, t2.column_two FROM table_one AS t1 LEFT JOIN table_two AS t2 ON t1.common_column = t2.common_column;
A left join ensures everyone is invited to the party—even if they don't have a dance partner! It’s useful when you want to include all records from a primary dataset and see where they match with secondary data.
Welcome to the magical world of SQL joins, where we turn scattered data into meaningful insights! Joins are your trusty tools for combining data from multiple tables, helping you uncover hidden stories within your database.
Objective: Retrieve basic information from a single table.
SELECT column_one, column_two FROM your_table;
This is the foundation for more complex queries.
Objective: Discover relationships between tables.
SELECT t1.column_one, t2.column_two FROM table_one AS t1 INNER JOIN table_two AS t2 ON t1.common_column = t2.common_column;
Objective: List all entries from one table, even without matches in another.
SELECT t1.column_one, t2.column_two FROM table_one AS t1 LEFT JOIN table_two AS t2 ON t1.common_column = t2.common_column;
Objective: Summarize data by counting occurrences or totals.
SELECT column_name, COUNT(*) AS total_count FROM your_table GROUP BY column_name;
Objective: Uncover detailed insights across multiple tables with conditions.
SELECT t1.column_one, t2.column_two, t3.column_three FROM table_one AS t1 INNER JOIN table_two AS t2 ON t1.common_column = t2.common_column INNER JOIN table_three AS t3 ON t2.another_common_column = t3.another_common_column WHERE some_condition = 'value';
-- Aliases SELECT column_name AS alias_name FROM table_name AS alias_table; -- Dot notation SELECT t1.column_name FROM table_one AS t1;
Returns rows with matching keys in both tables.
SELECT c.customer_id, c.name, o.order_id FROM customers c INNER JOIN orders o ON o.customer_id = c.customer_id;
All rows from the left table; matching rows from the right; non-matches as NULLs.
SELECT c.customer_id, c.name, o.order_id FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id;
All rows from the right table; matching rows from the left; non-matches as NULLs.
SELECT c.customer_id, c.name, o.order_id FROM customers c RIGHT JOIN orders o ON o.customer_id = c.customer_id;
All rows from both tables; non-matching sides filled with NULLs. (Not supported in MySQL; emulate with UNION of LEFT and RIGHT joins.)
-- Generic FULL OUTER JOIN (where supported) SELECT * FROM customers c FULL OUTER JOIN orders o ON o.customer_id = c.customer_id; -- MySQL emulation SELECT c.customer_id, c.name, o.order_id FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id UNION SELECT c.customer_id, c.name, o.order_id FROM customers c RIGHT JOIN orders o ON o.customer_id = c.customer_id;
Cartesian product of both tables (use sparingly).
SELECT * FROM sizes s CROSS JOIN colors c;
Join a table to itself using different aliases.
SELECT e.employee_id, e.name, m.name AS manager FROM employees e LEFT JOIN employees m ON m.employee_id = e.manager_id;