SQL - Self & Cross Join
Overview
SELF JOIN joins a table to itself. CROSS JOIN returns every combination of rows (cartesian product).
-- employees in same department (excluding self)
SELECT a.first_name AS emp, b.first_name AS teammate
FROM employees a
JOIN employees b ON a.department_id=b.department_id AND a.id<>b.id;
-- small cross product
SELECT p.name, c.name
FROM products p CROSS JOIN customers c;
-- self join
SELECT a.first_name AS emp, b.first_name AS teammate
FROM employees a JOIN employees b ON a.department_id=b.department_id AND a.id<>b.id;
-- cross join
SELECT p.name, c.name FROM products p CROSS JOIN customers c;
-- self join
SELECT a.first_name AS emp, b.first_name AS teammate
FROM employees a JOIN employees b ON a.department_id=b.department_id AND a.id<>b.id;
-- cross join
SELECT p.name, c.name FROM products p CROSS JOIN customers c;
Prerequisite
Load the Standard Test Data.
Expected Output (live)
Self Join (same department)
emp | teammate |
---|---|
Ada | Bob |
Ada | Eli |
Bob | Ada |
Bob | Eli |
Eli | Ada |
Eli | Bob |
Cross Join (first 10 combinations)
product | customer |
---|---|
Laptop Pro | Alice |
Laptop Pro | Ben |
Laptop Pro | Cara |
Laptop Pro | Dan |
Laptop Pro | Eva |
Wireless Mouse | Alice |
Wireless Mouse | Ben |
Wireless Mouse | Cara |
Wireless Mouse | Dan |
Wireless Mouse | Eva |