-- LEFT JOIN
SELECT e.first_name, d.name AS department
FROM employees e LEFT JOIN departments d ON d.id=e.department_id;
-- RIGHT JOIN
SELECT e.first_name, d.name AS department
FROM employees e RIGHT JOIN departments d ON d.id=e.department_id;
-- FULL OUTER JOIN (use UNION of left and right when needed)
-- LEFT JOIN
SELECT e.first_name, d.name AS department
FROM employees e LEFT JOIN departments d ON d.id=e.department_id;
-- RIGHT JOIN
SELECT e.first_name, d.name AS department
FROM employees e RIGHT JOIN departments d ON d.id=e.department_id;
-- FULL OUTER JOIN
SELECT e.first_name, d.name AS department
FROM employees e FULL OUTER JOIN departments d ON d.id=e.department_id;
-- SQLite: LEFT JOIN only
SELECT e.first_name, d.name AS department
FROM employees e LEFT JOIN departments d ON d.id=e.department_id;
-- Simulate FULL OUTER via UNION of LEFT and RIGHT (emulated)
SELECT e.first_name, d.name AS department
FROM employees e LEFT JOIN departments d ON d.id=e.department_id
UNION
SELECT e.first_name, d.name AS department
FROM departments d LEFT JOIN employees e ON d.id=e.department_id;