SQL การใช้งาน RIGHT JOIN

การใช้ RIGHT JOIN ใน SQL เป็นการรวมข้อมูลจากสองตารางที่เชื่อมโยงกัน โดยที่ตารางที่อยู่ข้างขวา (หลังคำสั่ง RIGHT JOIN) จะคงข้อมูลทั้งหมดไว้ไม่ว่าตารางซ้ายจะมีข้อมูลที่ตรงกันหรือไม่ ส่วนตารางซ้าย (ที่อยู่หน้าคำสั่ง RIGHT JOIN) ถ้าไม่มีข้อมูลที่ตรงกัน จะถูกเติมค่าด้วย NULL ในผลลัพธ์

ตัวอย่างการใช้งาน RIGHT JOIN ในสถานการณ์ต่าง ๆ

สร้างฐานข้อมูลตัวอย่าง

สมมติเรามีสองตารางดังนี้

  • ตาราง Employees ซึ่งเก็บข้อมูลพนักงาน
  • ตาราง Departments ซึ่งเก็บข้อมูลแผนก
SQL
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

SQL
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

เราสามารถกรองข้อมูลที่ต้องการโดยใช้เงื่อนไขเพิ่มเติม เช่น ต้องการดูเฉพาะแผนกที่ยังไม่มีพนักงาน

SQL
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 เนื่องจากตารางขวาจะเป็นตัวควบคุม

SQL
SELECT Employees.EmpID, Employees.EmpName, Departments.DeptName
FROM Employees
RIGHT JOIN Departments
ON Employees.DeptID = Departments.DeptID;

ในตัวอย่างนี้ ผลลัพธ์จะเหมือนกับตัวอย่างที่ 2 ไม่มีการดึงข้อมูลพนักงานที่มี NULL ใน DeptID

การใช้ RIGHT JOIN กับหลายตาราง

หากต้องการเชื่อมหลายตาราง เราสามารถใช้ RIGHT JOIN หลายครั้งได้ แต่ต้องมีการระบุเงื่อนไขการเชื่อมโยงข้อมูลให้ถูกต้อง

SQL
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)

แชร์เรื่องนี้