Cách truy hỏi vấn nhiều bảng, sử dụng những loại JOIN như LEFT JOIN, RIGHT JOIN, INNER JOIN trong SQL để mang dữ liệu kết hợp


Truy vấn các bảng, từ khớp nối những bảng

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

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

Khớp nối hai bảng

Khớp nối hai bảng cùng với nhau lúc truy vấn thì ngơi nghỉ mệnh đề from chỉ ra rằng tên nhì bảng cần liên kết (cách nhau vì chưng dấu phảy), với ở mệnh đề where là đk khớp nối.

Ví dụ:


SELECT Donhang.DonhangID, Khachhang.Hoten, Donhang.NgaydathangFROM Donhang, KhachhangWHERE Donhang.KhachhangID=Khachhang.KhachhangID
Ở mệnh đề where sinh sống câu truy vấn trên thì đoạn mã Donhang.KhachhangID=Khachhang.KhachhangID dùng để khớp nối bảng.

Mọi cặp bạn dạng ghi (dòng dữ liệu): phiên bản ghi ở bảng Donhang, bạn dạng ghi ở Khachhang tất cả cùng quý giá KhachhangID sẽ kết hợp với nhau để tạo thành dòng dữ liệu trong thời điểm tạm thời để select chọn:

*

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

Ở đây bao gồm một file CSDL mẫu mã dạng SQLite, chúng ta cũng 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 phép tắc Online: Chạy SQL

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

Từ khóa as chúng ta đã từng dùng để làm đặt tên cột tùy biến, với tên bảng, bảng tạm thời cũng rất có thể dùng as để tại vị tên tùy biến, mục tiêu để câu tầm nã vấn phức tạp, dài trở lên ngắn gọn, dễ đọc hơn.

Ví dụ bên trên viết tất cả đặt thêm tên bảng tùy biến


SELECT o.DonhangID, c.Hoten, o.NgaydathangFROM Donhang As o, Khachhang AS cWHERE o.KhachhangID=c.KhachhangID
test
Bảng Donhang đã đổi tên thành o, bảng Khachhang thành c.

Các kiểu dáng JOIN

Cách khớp nối bảng sinh hoạt trên (sử dụng điều kiện khớp nối sinh hoạt mệnh đề where) sử dụng với khớp nối thông thường, thực tiễn SQL thực hiện từ khóa join với nhiều cách kết nối bảng khách hàng nhau. Gồm có:

inner join : trả về các bạn dạng ghi có giá trị cân xứng giữa nhì bảng (nhớ lại phép giao nhì tập hợp). left join : mọi bản ghi bảng bên trái được trả về, bạn dạng ghi nào tương xứng với bản ghi bên nên thì nó được bổ sung cập nhật thêm dữ liệu từ phiên bản ghi bảng bên phải (nếu không tồn tại thì nhận NULL) right join : mọi phiên bản ghi bảng bên cần được trả về, sau bổ sung cập nhật dữ liệu cân xứng từ bảng mặt trái. outer join : (full join) mọi phiên bản ghi sinh 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 các trường hợp JOIN trên:

*

Quy tắc bình thường viết join : 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ừ bỏ khóa join, trong 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


Xem lại hình hình ảnh về Inner Join, nó tương đương với phép toán giao tập hợp.

inner join lựa chọn các phiên bản ghi mà phải tương xứng ở toàn bộ các bảng


*

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
.........

Sử dụng LEFT JOIN

*

LEFT JOIN trả về vớ cả bản ghi bảng phía trái kể cả bản ghi kia không tương xứng với bảng bên phải, còn bảng bên bắt buộc thì những phiên bản ghi nào tương xứng với bảng trái thì dữ liệu bạn dạng ghi kia được dùng làm kết phù hợp với bản ghi bảng trái, nếu không tồn tại dữ liệu vẫn NULL

Ví dụ:


HoTenDonhangID
Bùi phái mạnh Khánh
Bùi Thị Kim Oanh10266
Bùi Thị Kim Oanh10270
Hồ Nguyễn Minh Khuê
......

Xem thêm: Paracord Là Gì - Dây Sinh Tồn Paracord Đa Năng

quan lại sát hiệu quả ta thấy đông đảo HoTen sinh hoạt bảng phía bên trái được lấy ra, tiếp nối DonhangID làm việc bảng mặt phải phù hợp được dùng để kết hợp với HoTen nếu không có giá trị nào phù hợp thì nhận cực hiếm null

Sử dụng RIGHT JOIN

Trường hòa hợp này hoạt động giống cùng với LEFT JOIN theo hướng ngược lại.

Ví dụ:

SELECT Donhang.OrderID, NhanVien.Ten, NhanVien.HoFROM DonhangRIGHT JOIN NhanVienON Donhang.NhanvienID = NhanVien.NhanvienIDORDER BY Donhang.DonhangID demo

FULL OUTER JOIN

Xét tất cả các kết quả, cùng với SQLite không cung ứng (có thể thay thế bằng LEFT JOIN kết hợp với UNION)

SELECT Khachhang.HoTen, Donhang.DonhangIDFROM KhachhangFULL OUTER JOIN Donhang ON Khachhang.KhachhangID=Donhang.KhachhangIDORDER BY Khachhang.HoTen chạy thử
Mục lục bài viết
Nối các bảngCác hình dạng Join