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

Bạn đang xem: Câu lệnh sql join: các loại join trong sql


Truy vấn nhiều bảng, khớp nối các bảng cùng với where

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

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

Khớp nối hai bảng

Giờ bọn họ cần chuyên chú qua những dòng của tất cả hai bảng, với mỗi giao dịch trong bảng Donhang lấy ra ID của đơn hàng, ngày để hàng. Mỗi giao dịch đều tất cả KhachhangID, địa thế căn cứ vào đó lôi ra tên khách hàng hàng giỏ hàng trực tuyến trong bảng Khachhang

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

Ví dụ:


SELECT Donhang.DonhangID, Khachhang.Hoten, Donhang.NgaydathangFROM Donhang, KhachhangWHERE Donhang.KhachhangID=Khachhang.KhachhangID
kiểm tra

*

Sự kết hợp giữa nhì bảng


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

Ở đây tất cả một tệp tin CSDL chủng loại dạng SQLite, bạn cũng có thể tải về nghiên cứu, thực hành: cơ sở dữ liệu SQLite mẫu. Hoặc thực hiện trực tiếp chính sách Online: Chạy SQL

Đặt lại thương hiệu bảng lúc truy vấn cùng với AS

Từ khóa as chúng ta đã từng dùng làm đặt thương hiệu cột tùy biến, với cũng hoàn toàn có thể dùng as để tại vị tên tùy thay đổi (tên tắt cần sử dụng trong câu truy tìm vấn), mục tiêu để câu tróc nã vấn phức tạp, dài trở lên ngắn gọn, đọc dễ dàng hơn.

Ví dụ trên viết có sử dụng tên tắt mang lại bảng


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

Xem thêm: Đtcl Mùa 7: Chi Tiết Bản Cập Nhật Dtcl : Chi Tiết Bản Cập Nhật 12

Các đẳng cấp JOIN

Cách khớp nối bảng ở trên (sử dụng điều kiện khớp nối ở mệnh đề where) áp dụng với khớp nối thông thường, thực tiễn SQL sử dụng mệnh đề join với vô số cách thức kết nối bảng khách nhau tùy mục đích lấy dữ liệu. Trong cú pháp có từ khóa join cùng hai bảng yêu cầu kết nối, một bảng bên trái (bảng 1) một bảng bên bắt buộc (bảng 2) từ bỏ khóa JOIN (Chi máu cú pháp phía dưới) những kiểu JOIN trong SQL có có:


inner join Trả về các dòng hình thành bởi cặp phiên bản ghi của nhì bảng, với điều kiện cặp phiên bản ghi thứ nhất (thuộc bảng 1, bảng bên trái) có một trường tài liệu nào đó để so sánh bằng với cái giá trị của một trường tài liệu chỉ ra trong phiên 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 dạng ghi bảng phía trái được trả về, bạn dạng ghi nào phù hợp với bản ghi bên phải thì nó được bổ sung cập nhật thêm tài liệu từ phiên bản ghi bảng bên yêu cầu (nếu không tồn tại thì nhận NULL) right join Mọi bạn dạng ghi bảng bên bắt buộc được trả về, sau bổ sung dữ liệu cân xứng từ bảng mặt trái. outer join (full join) mọi bản ghi làm việc bảng trái cùng bảng phải phối kết hợp lại

Hình ảnh trực quan cho các trường hòa hợp JOIN trong SQL

*

Quy tắc chung viết join ... On : bảng trái là bảng nằm cạnh sát 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, vào mệnh đề join thì điều kiện phối kết hợp vếtsau tự khóa on

Sử dụng INNER JOIN trong SQL


Cú pháp cơ 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ó kiểu như với phép toán giao tập hợp. Inner join chọn các bản ghi nhưng phải phù hợp ở cả nhị bảng


*

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

Kết quả chạy thử:

Ví dụ INNER JOIN tía bảng vào SQL

Bạn rất có thể viết truy tìm vấn phức tạp, áp dụng INNER JOIN với bố bảng không giống nhau - phối hợp dữ liệu lại. Trả sử có tía bảng B1,B2,B3 thì bạn cũng có thể viết theo phía B1 và B2 inner join cùng nhau (sẽ tạo nên dữ liệu tam), tài liệu tạm này như là một trong những bảng liên tục inner join với B3. Bằng cách như vậy ba bảng sẽ phối hợp lại cùng 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 ví dụ như trên bố bảng Donhang, Khachhang, Shippers đã kết hợp với nhau bởi inner join.

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


test

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 sẽ ngắn điện thoại tư vấn và dễ đọc, thiết yếu câu truy nã vấn trên bạn cũng có thể viết như sau mà tác 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 khắc tên tắt là s, mệnh đề (Donhang INNER JOIN Khachhang ON Donhang.KhachhangID = Khachhang.KhachhangID) vẫn như là 1 trong những bảng bảng này khắc tên tắt là t