Concept Flow - Why joins are needed
Start with Table A
Identify related data
Combine matching rows
Create joined result
Use combined data
We start with two tables, find related rows, combine them, and get a new table with connected information.
SELECT employees.name, departments.name FROM employees JOIN departments ON employees.dept_id = departments.id;
| Step | Action | employees row | departments row | Match Condition | Output row |
|---|---|---|---|---|---|
| 1 | Check employees row 1 with departments row 1 | {id:1, name:'Alice', dept_id:10} | {id:10, name:'HR'} | 10 = 10 (True) | {employee_name:'Alice', department_name:'HR'} |
| 2 | Check employees row 1 with departments row 2 | {id:1, name:'Alice', dept_id:10} | {id:20, name:'Sales'} | 10 = 20 (False) | No output |
| 3 | Check employees row 2 with departments row 1 | {id:2, name:'Bob', dept_id:20} | {id:10, name:'HR'} | 20 = 10 (False) | No output |
| 4 | Check employees row 2 with departments row 2 | {id:2, name:'Bob', dept_id:20} | {id:20, name:'Sales'} | 20 = 20 (True) | {employee_name:'Bob', department_name:'Sales'} |
| 5 | Check employees row 3 with departments row 1 | {id:3, name:'Carol', dept_id:30} | {id:10, name:'HR'} | 30 = 10 (False) | No output |
| 6 | Check employees row 3 with departments row 2 | {id:3, name:'Carol', dept_id:30} | {id:20, name:'Sales'} | 30 = 20 (False) | No output |
| 7 | No more rows to check | N/A | N/A | N/A | End |
| Variable | Start | After Step 1 | After Step 4 | Final |
|---|---|---|---|---|
| Current employees row | None | {id:1, name:'Alice', dept_id:10} | {id:2, name:'Bob', dept_id:20} | None |
| Current departments row | None | {id:10, name:'HR'} | {id:20, name:'Sales'} | None |
| Output rows | [] | [{employee_name:'Alice', department_name:'HR'}] | [{employee_name:'Alice', department_name:'HR'}, {employee_name:'Bob', department_name:'Sales'}] | [{employee_name:'Alice', department_name:'HR'}, {employee_name:'Bob', department_name:'Sales'}] |
Joins combine rows from two tables based on a related column. They match rows where the join condition is true. Only matching rows appear in the output. This lets us see connected data from separate tables. Syntax example: SELECT * FROM A JOIN B ON A.key = B.key;