OUTER JOIN
Overview
The OUTER JOIN
or FULL OUTER JOIN
returns all the records from the selected fields between the two tables (left table & right table) whether the join condition is met or not.
Inner Join 🆚 Outer Join
The most significant difference between an INNER JOIN
and an OUTER JOIN
is that the INNER JOIN
only returns the information from both tables which are common and related to each other. The OUTER JOIN will return all rows (matched/unmatched) from both tables.
Syntax
a) Basic Syntax
In the above syntax:
-
SELECT column_1, column_2...
defines the columns from both tables where we want to display data. -
FROM table_1
represents the left table with table_1 in the FROM clause. -
FULL OUTER JOIN table_2
represents the right table with table_2 in the FULL OUTER JOIN condition. -
ON table_1.matching_field = table2.matching_field
sets the join condition after the ON keyword with the matching field between the two tables.
b) Syntax with an Alias
You can use an alias to refer to the table’s name. The results will stay the same. It only helps to write the query easier.
NULL
values will return in every column of the table that doesn’t have the matching record.Example
departments table
It will create a departments table as shown below:
employee table
It will create an employee table as shown below:
Case 1: FULL OUTER JOIN
1) Based on the above tables, we can write an OUTER JOIN
query as follows:
2) The result will show every department with an employee and the employee who works under a specific department.
3) It also includes every department that does not have any employees and the employees who do not belong to a specific department.
The following Venn diagram illustrates the FULL OUTER JOIN:
Case 2: FULL OUTER JOIN
with WHERE
Clause
a) Employee
- We can look up the department that does not have any employees by adding a
WHERE
clause andNULL
as the following query:
- The result will indicate that the Product department doesn’t have any employees 👨🏻💼
b) Department
1) Let’s find out the employee who doesn’t belong to any department by adding a WHERE clause and NULL as the following query:
2) The result will show that Gilbert Tom doesn’t belong to any department 👨🏻💼
The following Venn diagram illustrates how the FULL OUTER JOIN works for the department and employee with a null value: