Simple explanation for inner join and left join

Last week, I have heard my colleague explained how inner join and left join are used. SQL join types are typically explained using Venn diagrams but my colleague’s explanation is from the view of how we are using them.

Let’s say we are writing an SQL to get list of employees in the database shown below

SELECT employees.name, 
projects.name as projectFROM
FROM employees
INNER JOIN projects
ON employees.project_id = projects.project_id

You can see in the result set that we uses inner join for filtering out unwanted records which are those employee records that don’t have corresponding project and those projects that haven’t been associated to an employee

Now we also want to know whether each employee in the result set has access right to the laboratory room. We uses left join to pulling in extra information. Our SQL will looks like:

SELECT employees.name, 
projects.name AS project ,
lab_accesses.role AS lab_roleFROM
FROM employees
JOIN projects ON employees.project_id = projects.project_id
LEFT JOIN lab_accesses ON employees.lab_code = lab_accesses.lab_code

Our main purpose is to get list of employees with corresponding projects. The lab_role value is just our extra information. It is fine if an employee doesn’t have laboratory access right, we still want to include the employee in our result set. That’s why we use left join

It is somewhat oversimplified but I found this explanation is quite easy to remember