SQL Self Join

Định Nghĩa về SQL Self Join

Self Join là một kỹ thuật trong SQL cho phép một bảng được kết nối với chính nó. Kỹ thuật này hữu ích khi bạn cần so sánh các hàng trong cùng một bảng hoặc tìm các mối quan hệ giữa các bản ghi trong bảng.

Self Join sử dụng phép nối (JOIN) với nhau, thường là INNER JOIN, và đôi khi sử dụng LEFT JOIN hoặc RIGHT JOIN tùy thuộc vào yêu cầu truy vấn.

Cú Pháp của Self Join

Cú pháp cơ bản của self join như sau:

SELECT a.column_name, b.column_name
FROM table_name a, table_name b
WHERE condition;

Trong đó, ab là các bí danh (alias) được sử dụng để phân biệt các phiên bản khác nhau của bảng cùng một tên.

Ví Dụ Về Self Join

Giả sử bạn có một bảng Employees như sau:

| EmployeeID | Name   | ManagerID |
|------------|--------|-----------|
| 1          | John   | NULL      |
| 2          | Jane   | 1         |
| 3          | Mike   | 1         |
| 4          | Emily  | 2         |
| 5          | Alex   | 2         |

Bảng này chứa thông tin về các nhân viên và ID của người quản lý tương ứng của họ. Chúng ta có thể sử dụng self join để tìm tên của các nhân viên cùng với tên của người quản lý của họ.

SELECT e1.Name AS Employee, e2.Name AS Manager
FROM Employees e1
LEFT JOIN Employees e2 ON e1.ManagerID = e2.EmployeeID;

Trong truy vấn trên, e1e2 là các bí danh cho bảng Employees. Chúng ta thực hiện LEFT JOIN để lấy tất cả nhân viên từ e1 và tìm kiếm người quản lý tương ứng trong e2.

Kết quả sẽ là:

| Employee | Manager |
|----------|---------|
| John     | NULL    |
| Jane     | John    |
| Mike     | John    |
| Emily    | Jane    |
| Alex     | Jane    |

Qua ví dụ này, bạn có thể thấy cách sử dụng self join để làm rõ mối quan hệ giữa các nhân viên và người quản lý của họ trong cùng một bảng.

Kết Luận

Self Join là một công cụ mạnh mẽ giúp bạn có thể tìm ra mối quan hệ giữa các bản ghi trong cùng một bảng. Bằng cách sử dụng self join, bạn có thể dễ dàng phân tích dữ liệu phức tạp hơn và phát hiện các mối quan hệ chưa rõ ràng trong dữ liệu của bạn.