Understanding Joins
Understanding Inner , Outer , left Outer , Right Outer Joins and Cartesian Product
Left Table
EmployeeId=>EmployeeName idToName Table ( rows with Employee Id 3 is repeated )
| Employee ID | Employee Name |
| 1 | Maverick |
| 2 | Aurthur |
| 3 | James |
| 4 | Russel |
| 3 | James |
Right Table
EmployeeId=>DepartmentName IdToDepartment Table ( rows with Employee Id 5 is repeated )
| Employee ID | Department Name |
| 1 | Tech |
| 4 | Business |
| 5 | Sales |
| 5 | Sales |
[addToAppearHere]
Join (Inner Join ) : Join idToName , IdToDepartment where idToName. Employee ID = IdToDepartment.Employee ID
- The rows which are common in both the tables are only considered.
- Any repeated rows from either table will get repeated in output if it matches the joining criteria
| Employee ID | Employee Name | Employee ID | Department Name |
| 1 | Maverick | 1 | Tech |
| 4 | Russel | 4 | Business |

Outer Join (Full outer) : Full outer Join idToName , IdToDepartment where idToName. Employee ID = IdToDepartment.Employee ID
- Rows which are not common in both tables do appear in the output .
- Any repeated rows from either table will get repeated in output if it matches the joining criteria
| Employee ID | Employee Name | Employee ID | Department Name |
| 1 | Maverick | 1 | Tech |
| 2 | Aurthur | null | null |
| 3 | James | null | null |
| 4 | Russel | 4 | Business |
| 3 | James | null | null |
| null | null | 5 | Sales |
| null | null | 5 | Sales |

Left Outer Join : Left outer Join idToName , IdToDepartment where idToName. Employee ID = IdToDepartment.Employee ID
- All elements of the left table will be there . Right table elements which have no common id will be removed .
- Any repeated rows from either table will get repeated in output if it matches the joining criteria
| Employee ID | Employee Name | Employee ID | Department Name |
| 1 | Maverick | 1 | Tech |
| 2 | Aurthur | null | null |
| 3 | James | null | null |
| 4 | Russel | 4 | Business |
| 3 | James | null | null |

Right Outer Join : Right outer Join idToName , IdToDepartment where idToName. Employee ID = IdToDepartment.Employee ID
1. All elements of the Right table will be there . Left table elements which have no common id will be removed .
2. Any repeated rows from either table will get repeated in output if it matches the joining criteria
[addToAppearHere]
| Employee ID | Employee Name | Employee ID | Department Name |
| 1 | Maverick | 1 | Tech |
| 4 | Russel | 4 | Business |
| null | null | 5 | Sales |
| null | null | 5 | Sales |
Cartesian Product idToName , IdToDepartment .
It generates a total of M * N rows in output . Where M and N are total rows in Left Table and Right Table . There is no condition in Cartesian product
In our case it will 5 * 4 = 20 rows in output .