Tự tham gia SQL

Tu Tham Gia Sql



Một trong những tính năng nổi tiếng nhất của cơ sở dữ liệu quan hệ là nối. Tham gia là một trong những tính năng mạnh mẽ và phức tạp nhất của cơ sở dữ liệu quan hệ. Chúng cho phép mô-đun mở rộng và các mối quan hệ rất phức tạp giữa các bảng cơ sở dữ liệu mà không ảnh hưởng đến hiệu suất.

Tuy nhiên, có một kiểu liên kết trong SQL có xu hướng không được chú ý, được gọi là tự tham gia.

Trong SQL, tự nối là một kỹ thuật mạnh mẽ cho phép chúng ta kết hợp các hàng từ cùng một bảng dựa trên một cột có liên quan trong cùng một bảng.







Không giống như các kiểu liên kết khác trong SQL nơi chúng tôi lấy dữ liệu từ nhiều bảng, liên kết tự hoạt động trên một bảng duy nhất.



Có thể bạn thắc mắc, tại sao tôi lại cần tự tham gia khi tôi có thể tra cứu dữ liệu từ chính bảng đó? Mặc dù điều đó có thể đúng, nhưng tính năng tự tham gia có thể trợ giúp trong các tác vụ khi bạn cần thực hiện các truy vấn dữ liệu đệ quy hoặc tìm dữ liệu phân cấp.



Về cơ bản, tính năng tự tham gia đóng vai trò cơ bản khi bạn cần so sánh các hàng của cùng một bảng.





Hãy tham gia cùng chúng tôi trong bài đăng này khi chúng tôi khám phá tính năng tự tham gia là gì, cách chúng hoạt động và cách chúng tôi có thể sử dụng chúng trong bảng SQL.

LƯU Ý: Trước khi đi sâu vào, chúng tôi sẽ thiết lập một bảng cơ bản cho mục đích trình diễn. Tuy nhiên, bạn có thể sử dụng bất kỳ tập dữ liệu được hỗ trợ nào.



Dữ liệu mẫu

Các truy vấn sau đây tạo một bảng cơ bản chứa thông tin sản phẩm và chèn các bản ghi mẫu vào bảng. Điều này cho phép chúng tôi trình bày cách làm việc với tính năng tự kết nối trong SQL.

TẠO BẢNG Sản phẩm (
sản phẩm_id INT KHÓA CHÍNH,
tên sản phẩm VARCHAR(255) KHÔNG NULL,
parent_id INT
);

Thêm 10 bản ghi mẫu vào bảng.

CHÈN VÀO Sản phẩm (product_id, Product_name, parent_id) GIÁ TRỊ
(1, 'Điện tử', NULL),
(2, 'Điện thoại thông minh', 1),
(3, 'Máy tính xách tay', 1),
(4, 'iPhone 13', 2),
(5, 'Samsung Galaxy S21', 2),
(6, 'MacBook Pro', 3),
(7, 'Dell XPS 15', 3),
(8, 'Phụ kiện', NULL),
(9, 'Vỏ điện thoại', 8),
(10, 'Túi đựng máy tính xách tay', 8);

Bảng kết quả như sau:

Ví dụ 1: Tự tham gia cơ bản

Chúng ta hãy bắt đầu với việc tự tham gia cơ bản. Ví dụ: chúng ta có thể sử dụng tính năng tự nối đơn giản để truy xuất mối quan hệ cha-con của cùng một bảng.

Ví dụ: chúng ta có thể sử dụng nó để tìm tất cả các sản phẩm và sản phẩm gốc tương ứng của chúng. Chúng ta có thể chạy một truy vấn như sau:

CHỌN c.product_name NHƯ sản phẩm con, p.product_name NHƯ sản phẩm gốc
TỪ Sản phẩm c
LEFT JOIN Sản phẩm p ON c.parent_id = p.product_id;

Trong truy vấn mẫu đã cho, chúng tôi sử dụng “c” làm bí danh cho bảng sản phẩm đại diện cho các sản phẩm con.

Chúng tôi cũng tạo bí danh “p” cho bảng sản phẩm để đại diện cho các sản phẩm gốc.

Trong bước tiếp theo, chúng tôi sử dụng SQL LEFT JOIN cơ bản để đảm bảo rằng các sản phẩm cấp cao nhất được đưa vào kết quả.

Cuối cùng, chúng tôi sử dụng mệnh đề ON để tạo mối quan hệ giữa bản ghi con và bản ghi gốc bằng cách sử dụng cột “parent_id” và “product_id”.

Bảng kết quả như sau:

Bạn sẽ nhận thấy rằng các sản phẩm gốc không có liên kết trên cùng vì chúng nằm ở đầu hệ thống phân cấp còn được gọi là phần tử gốc.

Ví dụ 2: Tìm nạp dữ liệu phân cấp

Một trong những vai trò cơ bản nhất của tự tham gia là truy xuất dữ liệu phân cấp. Ví dụ: giả sử chúng tôi muốn truy xuất tất cả các sản phẩm con trong đó sản phẩm bằng “Phụ kiện”. Chúng ta có thể chạy truy vấn bằng cách tự tham gia như sau:

CHỌN c.product_name NHƯ child_product
TỪ Sản phẩm c
THAM GIA Sản phẩm p ON c.parent_id = p.product_id
WHERE p.product_name = 'Phụ kiện';

Trong trường hợp này, chúng ta sử dụng JOIN để kết hợp bảng sản phẩm với chính nó, sau đó sử dụng mệnh đề WHERE để lọc ra kết quả mà chúng ta muốn.

Phần kết luận

Trong hướng dẫn này, chúng ta đã khám phá tính năng tự tham gia là gì, cách thức hoạt động và cách chúng ta có thể sử dụng nó trong bảng SQL để truy xuất dữ liệu phân cấp hoặc thực hiện các truy vấn đệ quy.