Why do tables need a common column in a JOIN?
Why do tables need a common column in a JOIN?
It was a great question because, at first glance, it might seem like we can just join any two tables. But without a common column, SQL wouldn’t know how to relate data between them!
Why is a Common Column Needed?
1️⃣ To Establish a Relationship
Databases use relational models, meaning tables are connected through common keys (e.g., employee_id linking employees to their salaries).
2️⃣ To Avoid a Cartesian Product
Without a JOIN condition, SQL would create a Cartesian Product, where every row from one table is matched with every row from the other.
🔹 Example:
SELECT *
FROM employees
CROSS JOIN salaries;
If the employees table has 100 rows and salaries has 50 rows, this would return 100 × 50 = 5000 rows, which is meaningless in most cases.
3️⃣ To Retrieve Meaningful Data
A JOIN ensures that the right data from one table is matched to the right data in another.
🔹 Example:
SELECT e.name, s.salary
FROM employees e
JOIN salaries s ON e.employee_id = s.employee_id;
Here, the employee_id ensures that each employee’s salary is correctly linked.
💡 When is a Common Column NOT Needed?
If you’re doing a CROSS JOIN, which deliberately creates a Cartesian Product:
SELECT *
FROM employees
CROSS JOIN departments;
This returns all possible combinations of employees and departments.