MySQL การทำ SELF JOIN

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;
แชร์เรื่องนี้