SELF JOIN trong SQL

Mỗi phép Join đều phải có hai bảng, tuy nhiên có trường hợp bạn phải thực hiện JOIN trên cùng một bảng thì vẫn được, ta gọi phép JOIN này là SELF JOIN.

SELF JOIN trong SQL được sử dụng để thực hiện phép Join trên cùng một bảng bằng cách nối một bảng với chính nó, coi như đó là hai bảng và thay tên tạm thời ít nhất một bảng.

Cú pháp SELF JOIN trong SQL

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

SELECT a.ten_cot, b.ten_cot...
FROM bang1 a, bang1 b
WHERE a.cot_chung = b.cot_chung;

Ở đây, mệnh đề WHERE có thể là bất kỳ biểu thức nào theo yêu cầu của bạn.

Ví dụ về SELF JOIN trong SQL

Giả sử bảng NHANVIEN có các bản ghi sau:

Bảng 1: NHANVIEN

 +----+----------+-----+-----------+----------+
| ID | TEN      |TUOI | DIACHI    | LUONG    |
+----+----------+-----+-----------+----------+
|  1 | Thanh    |  32 | Haiphong  |  2000.00 |
|  2 | Loan     |  25 | Hanoi     |  1500.00 |
|  3 | Nga      |  23 | Hanam     |  2000.00 |
|  4 | Manh     |  25 | Hue       |  6500.00 |
|  5 | Huy      |  27 | Hatinh    |  8500.00 |
|  6 | Cao      |  22 | HCM       |  4500.00 |
|  7 | Lam      |  24 | Hanoi     | 10000.00 |
+----+----------+-----+-----------+----------+

Bây giờ, chúng ta hãy join hai bảng này bằng cách sử dụng SELF JOIN như sau:

SQL> SELECT a.ID, b.TEN, a.LUONG
FROM NHANVIEN a, NHANVIEN b
WHERE a.LUONG < b.LUONG;

Kết quả trả về là:

 +----+----------+---------+
| ID | TEN      | LUONG   |
+----+----------+---------+
|  2 | Thanh    | 1500.00 |
|  2 | Nga      | 1500.00 |
|  1 | Manh     | 2000.00 |
|  2 | Manh     | 1500.00 |
|  3 | Manh     | 2000.00 |
|  6 | Manh     | 4500.00 |
|  1 | Huy      | 2000.00 |
|  2 | Huy      | 1500.00 |
|  3 | Huy      | 2000.00 |
|  4 | Huy      | 6500.00 |
|  6 | Huy      | 4500.00 |
|  1 | Cao      | 2000.00 |
|  2 | Cao      | 1500.00 |
|  3 | Cao      | 2000.00 |
|  1 | Lam      | 2000.00 |
|  2 | Lam      | 1500.00 |
|  3 | Lam      | 2000.00 |
|  4 | Lam      | 6500.00 |
|  5 | Lam      | 8500.00 |
|  6 | Lam      | 4500.00 |
+----+----------+---------+

Xem thêm các kiểu JOIN:

Thứ Năm, 14/03/2019 15:55
3,19 👨 20.652
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    ❖ Học SQL
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng