Tham gia ba bảng trong SQL

Tham Gia Ba Bang Trong Sql



Một trong những tính năng chính của cơ sở dữ liệu quan hệ là khả năng phân tách dữ liệu liên quan thành các thành phần khác nhau được gọi là “bảng”. Không giống như các cơ sở dữ liệu khác, cơ sở dữ liệu quan hệ yêu cầu thu thập dữ liệu từ nhiều bảng khác nhau và tập hợp các kết quả thành dữ liệu có ý nghĩa.

Đây là lúc chức năng của phép nối phát huy tác dụng. Trong cơ sở dữ liệu quan hệ, phép nối là một trong những thao tác phổ biến nhất cho phép bạn kết hợp dữ liệu từ hai hoặc nhiều bảng thành một tập kết quả duy nhất.







Tuy nhiên, bạn có thể thấy rằng hầu hết các phép nối chỉ bao gồm hai bảng. Tuy nhiên, các liên kết có thể nhanh chóng mở rộng thành ba bảng trở lên. Mặc dù có thể hiệu quả hơn khi xem xét CTE khi làm việc với nhiều hơn ba bảng, nhưng các phép nối có thể rất hiệu quả và nhanh chóng khi có ba bảng.



Trong hướng dẫn này, chúng ta sẽ xem qua các bước mà bạn cần để thực hiện phép nối liên quan đến ba bảng trong SQL.



Bắt đầu

Trước khi bắt đầu, chúng tôi giả định rằng bạn có ba bảng đơn giản với các cột như minh họa sau:





Bảng 1:
nhận dạng | tên | tuổi

Ban 2:
nhận dạng | thành phố | quốc gia

Bàn số 3:
nhận dạng | lương | chức vụ


Bố cục này cho phép chúng tôi nhanh chóng hiểu cách hoạt động của việc nối ba bảng và cách chúng tôi có thể định cấu hình chúng bằng truy vấn SQL.

Tham gia ba bảng trong SQL

Khi thực hiện bất kỳ phép nối nào trong SQL, thành phần chính bắt đầu bằng cách xác định một cột chung hoặc một tập hợp các cột trong mỗi bảng mà bạn cần nối. Sau đó, bạn có thể sử dụng các cột được chia sẻ này để liên kết bảng với nhau, cho phép SQL diễn giải và hợp nhất dữ liệu một cách hợp lý và hiệu quả.



Mặc dù có nhiều loại phép nối trong SQL, nhưng thành phần chính là sự giống nhau trong các bảng.

Đối với hướng dẫn này, chúng tôi sẽ tập trung vào một phép nối bên trong chỉ trả về các hàng khớp với các giá trị trong ba bảng.

Trong trường hợp của các bảng trước đó, chúng ta có thể thực hiện nối bên trong ba bảng như minh họa trong truy vấn sau:

CHỌN Table1.name, Table2.city, Table3.salary
TỪ Bảng1
INNER THAM GIA Bảng2
BẬT Table1.id = Table2.id
INNER THAM GIA Bảng3
BẬT Table2.id = Table3.id;


Hãy để chúng tôi khám phá từng bước truy vấn trước đó:

    1. Đầu tiên là câu lệnh SELECT cho phép chúng ta chọn các cột mà chúng ta muốn đưa vào tập kết quả. Trong trường hợp này, chúng tôi quan tâm đến cột tên từ Bảng 1, cột thành phố từ Bảng 2 và cột lương từ Bảng 3.
    2. Sử dụng câu lệnh TỪ, chúng tôi chỉ định các bảng đích mà từ đó chúng tôi muốn tìm nạp các cột đã đặt. Trong trường hợp này, chúng tôi đang tìm nạp từ Bảng 1.
    3. Tiếp theo là mệnh đề INNER JOIN. Chúng tôi sử dụng mệnh đề này để nối Bảng 1 với Bảng 2. Chúng tôi cũng sử dụng mệnh đề ON để chỉ định điều kiện liên kết hai bảng, trong trường hợp này là cột ID.
    4. INNER JOIN thứ hai cho phép chúng ta nối tập kết quả từ lần nối đầu tiên với Bảng 3. Sử dụng mệnh đề ON, chúng ta nói với SQL rằng chúng ta muốn nối tập kết quả và Bảng 3 dựa trên cột ID.
    5. Tập hợp kết quả từ cả ba bảng được bao gồm trong các cột đã chọn.

Ví dụ thực tế:

Mặc dù ví dụ trước minh họa cách nối ba bảng, chúng ta hãy lấy một ví dụ thực tế hơn và sử dụng cơ sở dữ liệu Sakila.

Chúng tôi tham gia các bảng phim, cho thuê và kiểm kê trong trường hợp này. Truy vấn như sau:

CHỌN cho thuê.rental_id, cho thuê.rental_date, phim.tiêu đề, hàng tồn kho.inventory_id
TỪ cho thuê
THAM GIA khoảng không quảng cáo BẬT cho thuê.inventory_id = inventory.inventory_id
THAM GIA phim TRÊN stock.film_id = film.film_id
WHERE phim.title = 'CUỘC ĐUA MẶT TRỜI' ;


Giải trình:

    1. Trong trường hợp này, chúng tôi sử dụng câu lệnh SELECT để chọn các cột Rent_id, Rent_date và inventory_id từ bảng cho thuê.
    2. Mệnh đề JOIN đầu tiên liên kết bảng cho thuê với bảng khoảng không quảng cáo bằng cách sử dụng cột inventory_id.
    3. Mệnh đề JOIN thứ hai nối tập kết quả từ phép nối đầu tiên vào bảng phim bằng cách sử dụng cột film_id.
    4. Cuối cùng, chúng tôi sử dụng mệnh đề WHERE để lọc tập hợp kết quả chỉ bao gồm tiêu đề đích.

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

Phần kết luận

Nối ba bảng trong SQL yêu cầu xác định một cột được chia sẻ hoặc tập hợp các cột trong mỗi bảng và sử dụng kiểu nối thích hợp (bên trong, bên trái, bên phải hoặc bên ngoài đầy đủ) để liên kết các bảng với nhau. Như được trình bày trong hướng dẫn này, bạn nên hiểu cách nối ba bảng trong SQL.