SELF JOIN คือการเชื่อมตารางกับตัวเอง (ตารางเดียวกัน) โดยใช้ Alias (ชื่อย่อ) แยกเป็นคนละชุด แม้ว่าจะเป็นตารางเดียวกัน แต่เราสามารถเปรียบเทียบข้อมูลภายในตารางได้ เช่น
- หาความสัมพันธ์ในข้อมูลเดียวกัน
- เปรียบเทียบค่าในแถวหนึ่งกับอีกแถวหนึ่งในตารางเดียวกัน
รูปแบบคำสั่ง
SELECT A.column1, B.column2
FROM table_name AS A
JOIN table_name AS B ON A.column = B.column;
ตัวอย่างการใช้งาน
สร้างตาราง employee ขึ้นมาสำหรับใช้เป็นตัวอย่าง
SQL
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
manager_id INT,
FOREIGN KEY (manager_id) REFERENCES employee(id)
)เพิ่มข้อมูลตัวอย่างเข้าไปในตาราง employee ที่เพิ่งสร้างขึ้นมา
SQL
INSERT INTO employee (id, name, manager_id) VALUES
(1, 'Alice', NULL), -- ผู้จัดการใหญ่ (ไม่มีใครจัดการ)
(2, 'Bob', 1), -- Bob อยู่ใต้ Alice
(3, 'Charlie', 1), -- Charlie อยู่ใต้ Alice
(4, 'Diana', 2), -- Diana อยู่ใต้ Bob
(5, 'Eve', 2), -- Eve อยู่ใต้ Bob
(6, 'Frank', 3); -- Frank อยู่ใต้ Charlieใช้คำสั่ง SELF JOIN เพื่อดูพนักงานกับผู้จัดการของเขา
SQL
SELECT e.name AS employee_name,
m.name AS manager_name
FROM employee AS e
JOIN employee AS m ON e.manager_id = m.id;