Cách truy vấn vấn nhiều bảng, sử dụng các loại JOIN như LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN vào SQL để lấy dữ liệu kết hợp. Cú pháp lệnh JOIN lấy tài liệu hai bảng, ba bảng.

Bạn đang xem: Lệnh join trong sql


Truy vấn những bảng, khớp nối những bảng với where

Một vào nhưng ích lợi chính của SQL là khả năng kết hợp dữ liệu từ nhì hay những bảng lại cùng với nhau. Việc phối kết hợp các bảng lại do vậy gọi là JOIN, SQL sẽ tạo nên ra một bảng trong thời điểm tạm thời chứa dữ liệu kết quả từ JOIN.

Trước khi tò mò cú pháp mệnh đề join, trong một số trường hợp rất có thể lấy dữ liệu phối hợp của các bảng chỉ bằng cách đơn giản là sử dụng mệnh đề where, hãy xét lấy một ví dụ sau: có CSDL trong đó bảng Donhang với bảng Khachhang (thông tin kết cấu CSDL lấy một ví dụ này xem tại SQL Online)

Khớp nối nhị bảng

Giờ chúng ta cần săn sóc qua những dòng của tất cả hai bảng, cùng với mỗi deals trong bảng Donhang kéo ra ID của solo hàng, ngày để hàng. Mỗi đơn hàng đều tất cả KhachhangID, căn cứ vào đó kéo ra tên khách hàng đăng ký trực tuyến trong bảng Khachhang

Như vậy dữ liệu lôi ra từ nhì bảng, nhì bảng này sẽ khớp nối dữ liệu với nhau, vào câu truy nã vấn trước tên làm việc mệnh đề from chỉ ra rằng tên hai bảng cần liên kết (cách nhau bởi vì dấu phảy), và ở mệnh đề where là đk khớp nối.

Ví dụ:


SELECT Donhang.DonhangID, Khachhang.Hoten, Donhang.NgaydathangFROM Donhang, KhachhangWHERE Donhang.KhachhangID=Khachhang.KhachhangID
chạy thử

*

Sự phối hợp giữa hai bảng


Kết trái trên bạn thấy tên quý khách hàng (Hoten) rước ở bảng Khachhang, với mỗi quý khách hàng lấy được thì những ngày đặt hàng và ID của deals (Ngaydathang,DonhangID) của người tiêu dùng đó được rước ở bảng Donhang

Ở đây bao gồm một tệp tin CSDL mẫu dạng SQLite, chúng ta có thể tải về nghiên cứu, thực hành: database SQLite mẫu. Hoặc sử dụng trực tiếp qui định Online: Chạy SQL

Đặt lại tên bảng khi truy vấn với AS

Từ khóa as bạn đã từng dùng để đặt thương hiệu cột tùy biến, cùng với cũng rất có thể dùng as để đặt tên tùy trở nên (tên tắt sử dụng trong câu tầm nã vấn), mục tiêu để câu tróc nã vấn phức tạp, nhiều năm trở lên ngắn gọn, đọc dễ hơn.

Ví dụ bên trên viết có thực hiện tên tắt đến bảng


SELECT o.DonhangID, c.Hoten, o.NgaydathangFROM Donhang As o, Khachhang AS cWHERE o.KhachhangID=c.KhachhangID
kiểm tra
Bảng Donhang tương ứng với thương hiệu tắt o, bảng Khachhang thành c.

Xem thêm: Cách kẻ eyeliner cho mắt 2 mí cực dễ giúp nàng xinh lung linh

Các dạng hình JOIN

Cách khớp nối bảng làm việc trên (sử dụng điều kiện khớp nối sinh sống mệnh đề where) thực hiện với khớp nối thông thường, thực tiễn SQL thực hiện mệnh đề join với rất nhiều cách kết nối bảng khách nhau tùy mục đích lấy dữ liệu. Vào cú pháp tất cả từ khóa join cùng hai bảng yêu cầu kết nối, một bảng phía bên trái (bảng 1) một bảng bên phải (bảng 2) từ khóa JOIN (Chi huyết cú pháp phía dưới) các kiểu JOIN trong SQL bao gồm có:


inner join Trả về các dòng hình thành vì chưng cặp bản ghi của hai bảng, với điều kiện cặp phiên bản ghi đầu tiên (thuộc bảng 1, bảng bên trái) có một trường dữ liệu nào đó để đối chiếu bằng với giá trị của một trường dữ liệu chỉ ra trong bản ghi (record) thứ 2 (bảng 2, bảng bên phải). (nhớ lại phép giao nhị tập hợp) left join Mọi bản ghi bảng phía trái được trả về, phiên bản ghi nào tương xứng với phiên bản ghi bên nên thì nó được bổ sung cập nhật thêm tài liệu từ bản ghi bảng bên đề xuất (nếu không có thì nhấn NULL) right join Mọi phiên bản ghi bảng bên đề nghị được trả về, sau bổ sung dữ liệu tương xứng từ bảng mặt trái. outer join (full join) mọi phiên bản ghi sống bảng trái cùng bảng phải kết hợp lại

Hình ảnh trực quan cho những trường phù hợp JOIN vào SQL

*

Quy tắc chung viết join ... On : bảng trái là bảng nằm cạnh trái (phía trước) tự khóa join,bảng phái là bảng sau (bên phải) từ khóa join, trong mệnh đề join thì điều kiện phối hợp vếtsau trường đoản cú khóa on

Sử dụng INNER JOIN trong SQL


Cú pháp cơ phiên bản như sau:

SELECT ...FROM bảng_trái INNER JOIN bảng_phảiON điều_kiện_khớp_nốiXem lại hình ảnh về Inner Join, nó tương đương với phép toán giao tập hợp. Inner join chọn các bạn dạng ghi mà lại phải tương xứng ở cả nhị bảng


*

trong những số đó bảng Donhang là bảng trái vì bên trái từ khóa INNER JOIN, Khachhang là bảng phải. Biểu thức sau từ bỏ khóa ON rõ ràng ở lấy ví dụ này là Donhang.KhachhangID = Khachhang.KhachhangID là biểu thức khớp nối. Từ trên đây SQL rước ghi trong Donhang, sau đó kiểm tra trong Khachhang coi có phiên bản ghi nào thỏa mãn mệnh đề ON. Giả dụ thỏa mãn, hai bản ghi từ nhì bảng sẽ phối kết hợp lại với trả về (dùng select đế lấy).

Kết quả chạy thử:

Ví dụ INNER JOIN tía bảng trong SQL

Bạn rất có thể viết truy tìm vấn phức tạp, thực hiện INNER JOIN với tía bảng khác biệt - phối kết hợp dữ liệu lại. Giả sử có tía bảng B1,B2,B3 thì chúng ta có thể viết theo phía B1 với B2 inner join với nhau (sẽ tạo ra dữ liệu tam), dữ liệu tạm này như là một trong những bảng tiếp tục inner join cùng với B3. Bằng phương pháp như vậy bố bảng sẽ phối kết hợp lại với nhau.


SELECT Donhang.DonhangID, Khachhang.HoTen, Shippers.Hoten AS TenShipperFROM (Donhang INNER JOIN Khachhang ON Donhang.KhachhangID = Khachhang.KhachhangID)INNER JOIN Shippers ON Donhang.ShipperID = Shippers.ShipperID lấy ví dụ trên bố bảng Donhang, Khachhang, Shippers vẫn kết phù hợp với nhau do inner join.

(Donhang INNER JOIN Khachhang ON Donhang.KhachhangID = Khachhang.KhachhangID) là phối kết hợp bởi Donhang cùng Khachhang nó sẽ tạo nên ra một bảng tạm. Bảng trợ thời này liên tục INNER JOIN với Shippers


kiểm tra

Kết quả

DonhangIDHoTenTenShipper
10248Nguyễn Bích ThủyGoViet
10249Hoàng Thị Bích NgọcGrab
10250Phạm Thu HuyềnBee
10251Trần Diễm Thùy DươngGrab
.........

Nếu các bạn dùng tự khóa AS hoàn toàn có thể cú pháp đã ngắn gọi và dễ đọc, chính câu truy tìm vấn trên chúng ta cũng có thể viết như sau mà công dụng tương đương


SELECT t.DonhangID, t.HoTen, s.Hoten AS TenShipperFROM (Donhang INNER JOIN Khachhang ON Donhang.KhachhangID = Khachhang.KhachhangID) as tINNER JOIN Shippers as s ON t.ShipperID = S.ShipperID Bảng Shippers viết tên tắt là s, mệnh đề (Donhang INNER JOIN Khachhang ON Donhang.KhachhangID = Khachhang.KhachhangID) đang như là một bảng bảng này viết tên tắt là t