การใช้ RIGHT JOIN ใน SQL เป็นการรวมข้อมูลจากสองตารางที่เชื่อมโยงกัน โดยที่ตารางที่อยู่ข้างขวา (หลังคำสั่ง RIGHT JOIN) จะคงข้อมูลทั้งหมดไว้ไม่ว่าตารางซ้ายจะมีข้อมูลที่ตรงกันหรือไม่ ส่วนตารางซ้าย (ที่อยู่หน้าคำสั่ง RIGHT JOIN) ถ้าไม่มีข้อมูลที่ตรงกัน จะถูกเติมค่าด้วย NULL ในผลลัพธ์
ตัวอย่างการใช้งาน RIGHT JOIN ในสถานการณ์ต่าง ๆ
สร้างฐานข้อมูลตัวอย่าง
สมมติเรามีสองตารางดังนี้
- ตาราง Employees ซึ่งเก็บข้อมูลพนักงาน
- ตาราง Departments ซึ่งเก็บข้อมูลแผนก
CREATE TABLE Employees (
EmpID INT,
EmpName VARCHAR(100),
DeptID INT
);
INSERT INTO Employees (EmpID, EmpName, DeptID) VALUES
(1, 'John Doe', 101),
(2, 'Jane Smith', 102),
(3, 'Sam Brown', NULL),
(4, 'Lisa Black', 101);
CREATE TABLE Departments (
DeptID INT,
DeptName VARCHAR(100)
);
INSERT INTO Departments (DeptID, DeptName) VALUES
(101, 'Sales'),
(102, 'Marketing'),
(103, 'HR');ตาราง Employees จะมีข้อมูลพนักงาน 4 คน โดยมีบางคนที่ไม่มีข้อมูลแผนก (NULL) ส่วนตาราง Departments จะมี 3 แผนก
ตาราง Employees

ตาราง Departments

การใช้ RIGHT JOIN
การรวมข้อมูลโดยใช้ RIGHT JOIN จะดึงข้อมูลจากตาราง Departments ทั้งหมด และดึงข้อมูลพนักงานที่อยู่ในแผนกนั้น ๆ หากมีข้อมูลในตาราง Employees
SELECT Employees.EmpID, Employees.EmpName, Departments.DeptName
FROM Employees
RIGHT JOIN Departments
ON Employees.DeptID = Departments.DeptID;- ในตัวอย่างนี้ ตาราง
Departmentsทุกแผนกจะถูกแสดงผลออกมา - พนักงานที่อยู่ในแผนก
Sales(EmpID 1 และ 4) และMarketing(EmpID 2) จะถูกดึงข้อมูลมาแสดง - แต่ในแผนก
HRไม่มีพนักงานอยู่ ข้อมูลพนักงานในผลลัพธ์จะเป็นNULL
ผลลัพธ์

การใช้ RIGHT JOIN ร่วมกับ WHERE
เราสามารถกรองข้อมูลที่ต้องการโดยใช้เงื่อนไขเพิ่มเติม เช่น ต้องการดูเฉพาะแผนกที่ยังไม่มีพนักงาน
SELECT Employees.EmpID, Employees.EmpName, Departments.DeptName
FROM Employees
RIGHT JOIN Departments
ON Employees.DeptID = Departments.DeptID
WHERE Employees.EmpID IS NULL;- การใช้เงื่อนไข
WHERE Employees.EmpID IS NULLช่วยกรองข้อมูลให้แสดงเฉพาะแผนกที่ไม่มีพนักงานเท่านั้น
ผลลัพธ์

การใช้ RIGHT JOIN ในกรณีที่มี NULL ในตารางด้านซ้าย
ในกรณีที่มีข้อมูล NULL ในตารางด้านซ้าย เช่นพนักงานบางคนไม่มีข้อมูลแผนก (NULL ในฟิลด์ DeptID) จะไม่ได้ถูกดึงข้อมูลออกมาในกรณีของ RIGHT JOIN เนื่องจากตารางขวาจะเป็นตัวควบคุม
SELECT Employees.EmpID, Employees.EmpName, Departments.DeptName
FROM Employees
RIGHT JOIN Departments
ON Employees.DeptID = Departments.DeptID;ในตัวอย่างนี้ ผลลัพธ์จะเหมือนกับตัวอย่างที่ 2 ไม่มีการดึงข้อมูลพนักงานที่มี NULL ใน DeptID

การใช้ RIGHT JOIN กับหลายตาราง
หากต้องการเชื่อมหลายตาราง เราสามารถใช้ RIGHT JOIN หลายครั้งได้ แต่ต้องมีการระบุเงื่อนไขการเชื่อมโยงข้อมูลให้ถูกต้อง
SELECT Employees.EmpName, Departments.DeptName, Projects.ProjectName
FROM Employees
RIGHT JOIN Departments
ON Employees.DeptID = Departments.DeptID
RIGHT JOIN Projects
ON Employees.EmpID = Projects.EmpID;ตัวอย่างนี้เป็นการเชื่อมโยงตารางเพิ่มเติมเข้ามา (Projects) โดยอาจมีพนักงานที่ทำโครงการต่าง ๆ ซึ่งเราสามารถใช้ RIGHT JOIN กับตารางหลาย ๆ ตารางได้ตามความต้องการ
สรุป
RIGHT JOIN จะดึงข้อมูลจากตารางด้านขวามาแสดงทั้งหมด และดึงข้อมูลที่สัมพันธ์กันจากตารางด้านซ้าย หากตารางด้านซ้ายไม่มีข้อมูลที่ตรงกัน จะเติมด้วย NULL เหมาะสำหรับการแสดงข้อมูลทั้งหมดจากตารางหลัก (ในกรณีนี้คือ Departments) และแสดงข้อมูลที่สัมพันธ์กันจากตารางรอง (Employees)
