LEFT JOIN หรือบางครั้งเรียกว่า LEFT OUTER JOIN เป็นการรวมข้อมูลจากสองตาราง โดยจะคืนค่าทุกแถวจากตารางด้านซ้าย (ซึ่งอยู่ทางซ้ายของคำสั่ง LEFT JOIN) แม้ว่าแถวเหล่านั้นจะไม่มีข้อมูลที่ตรงกับเงื่อนไขการเชื่อมในตารางด้านขวาก็ตาม สำหรับแถวที่ไม่มีข้อมูลตรงกันจากตารางด้านขวา ค่าในตารางด้านขวาจะถูกแสดงเป็น NULL
การใช้งาน LEFT JOIN
การใช้งาน LEFT JOIN สามารถนำไปใช้ในกรณีต่างๆ เช่น การรวมข้อมูลจากหลายๆ ตาราง การหาข้อมูลที่มีหรือไม่มีการเชื่อมต่อกัน และอื่นๆ
ตารางตัวอย่าง
ให้เราสร้างฐานข้อมูลตัวอย่างสองตารางคือ employees และ departments เพื่ออธิบายการใช้ LEFT JOIN ดังนี้
สร้างตาราง employees
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department_id INT
);แทรกข้อมูลเข้าในตาราง
INSERT INTO employees (employee_id, first_name, last_name, department_id)
VALUES
(1, 'John', 'Doe', 101),
(2, 'Jane', 'Smith', 102),
(3, 'Michael', 'Johnson', NULL),
(4, 'Emily', 'Davis', 101);
สร้างตาราง departments
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100)
);แทรกข้อมูลเข้าในตาราง
INSERT INTO departments (department_id, department_name)
VALUES
(101, 'Human Resources'),
(102, 'IT'),
(103, 'Sales');
ตัวอย่างการใช้ LEFT JOIN
ตัวอย่างที่ 1: ใช้ LEFT JOIN เพื่อรวมข้อมูลจากตาราง employees กับ departments
SELECT
employees.employee_id,
employees.first_name,
employees.last_name,
departments.department_name
FROM
employees
LEFT JOIN
departments
ON
employees.department_id = departments.department_id;ในตัวอย่างนี้ เรากำลังเลือกข้อมูลพนักงานจากตาราง employees และเชื่อมต่อกับตาราง departments โดยใช้ฟิลด์ department_id ที่เป็นค่ากำหนดในการเชื่อมต่อ ตารางด้านซ้ายคือ employees และตารางด้านขวาคือ departments ในกรณีที่ไม่มีข้อมูลตรงกับตารางด้านขวา ค่า department_name จะแสดงเป็น NULL เช่นกรณีของ Michael Johnson ที่ไม่มี department_id
ผลลัพธ์

ตัวอย่างที่ 2: ใช้ LEFT JOIN กับเงื่อนไขเพิ่มเติม (ใช้ WHERE)
SELECT
employees.employee_id,
employees.first_name,
employees.last_name,
departments.department_name
FROM
employees
LEFT JOIN
departments
ON
employees.department_id = departments.department_id
WHERE
departments.department_name IS NULL;การใช้เงื่อนไขใน WHERE เพื่อกรองข้อมูลที่มีค่า department_name เป็น NULL นั้นมีประโยชน์เมื่อต้องการหาพนักงานที่ไม่มีการกำหนดแผนก (department) ในตาราง employees
ผลลัพธ์

ตัวอย่างที่ 3: ใช้ LEFT JOIN กับหลายตาราง
สมมติว่าเรามีอีกตารางหนึ่งคือ salaries ที่เก็บข้อมูลเงินเดือนของพนักงาน
สร้างตาราง
CREATE TABLE salaries (
employee_id INT PRIMARY KEY,
salary DECIMAL(10, 2)
);แทรกข้อมูลเข้าในตาราง
INSERT INTO salaries (employee_id, salary)
VALUES
(1, 50000.00),
(2, 60000.00),
(4, 55000.00);ตัวอย่างข้อมูลในตาราง

โค้ดตัวอย่างการเชื่อมต่อทั้งสามตาราง
SELECT
employees.employee_id,
employees.first_name,
employees.last_name,
departments.department_name,
salaries.salary
FROM
employees
LEFT JOIN
departments
ON
employees.department_id = departments.department_id
LEFT JOIN
salaries
ON
employees.employee_id = salaries.employee_id;ในตัวอย่างนี้เราใช้ LEFT JOIN กับตาราง salaries เพิ่มเติม เพื่อดึงข้อมูลเงินเดือนของพนักงานที่มีในตารางนั้น อย่างไรก็ตาม หากพนักงานไม่มีข้อมูลเงินเดือน เช่น Michael Johnson (employee_id 3) ค่า salary จะแสดงเป็น NULL
ผลลัพธ์

สรุป
การใช้ LEFT JOIN ใน SQL มีประโยชน์เมื่อต้องการดึงข้อมูลจากหลายๆ ตาราง โดยยังคงเก็บข้อมูลของตารางด้านซ้ายทั้งหมด แม้ว่าจะไม่มีข้อมูลที่ตรงกันในตารางด้านขวา โดยสามารถประยุกต์ใช้ได้หลากหลายรูปแบบ เช่น การรวมข้อมูล การหาแถวที่ไม่มีความสัมพันธ์กัน หรือการเชื่อมข้อมูลจากหลายตาราง
