Tìm hiểu với cách sử dụng kết bảng: Kết bằng (EquiJoin), Kết không bằng (Non EquiJoin), Kết với chính mình (Self Join), Kết bởi mệnh đề Join

Các một số loại phép kết

Kết bởi (EquiJoin)Kết không bằng (Non EquiJoin)Kết với chủ yếu mình (Self Join)Kết bằng mệnh đề Join

Phép kết bằng

Sử dụng điều kiện kết bởi trong mệnh đề WHERENếu xuất hiện tên cột trùng nhau trong nhiều bảng thì bắt buộc phải sử dụng thương hiệu bảng hoặc túng danh bảng trước tên cột.

Bạn đang xem: Lấy dữ liệu từ 3 bảng trong sql

Bạn đang xem: Lấy tài liệu từ 3 bảng vào sql

SELECT bang1.cot, bang2.cotFROM bang1, bang2WHERE bang1.cot1 = bang2.cot2

Phép kết bởi thực hiện như vậy nào?


*

Kết quả nhận thấy từ phép kết bằng

SELECT nhanvien.manhanvien, nhanvien.tennv,nhanvien.maphong, phong.maphong,phong.makhuvucFROM qlns.nhanvien, qlns.phongWHERE nhanvien.maphong = phong.maphong;

*

Sử dụng túng bấn danh cho bảng

Đơn giản hóa những câu truy vấn khi cần thực hiện tên bảng cho vấn đề truy xuất các cột.

Xem thêm: Mật Ong Cho Da Mặt: Công Dụng Của Mật Ong Với Da Mặt: Công Dụng Và Lợi Ích

SELECT nv.manhanvien, nv.tennv, nv.maphong,ph.maphong, ph.makhuvucFROM qlns.nhanvien nv , qlns.phong phWHERE nv.maphong = ph.maphong;

Kết nhiều hơn thế nữa hai bảng


*

*

Kết trái từ phép kết ko bằng

SELECT nv.tennv, nv.mucluong, lcv.maloaicvFROM qlns.nhanvien nv, qlns.loaicongviec lcvWHERE nv.mucluong BETWEEN lcv.mucluong_min & lcv.mucluong_max;

*

SELECT nvien.honv+’ ‘+nvien.tennv + N" thao tác làm việc cho " + nguoiqly.tennv as FROM qlns.nhanvien nvien, qlns.nhanvien nguoiqlyWHERE nvien.manguoiquanly = nguoiqly.manhanvien ;

Sử dụng mệnh đề JOIN để kết

SELECT bang1.cot, bang2.cotFROM bang1 | | JOIN bang2ON (bang1.ten_cot = bang2.ten_cot) >

Cross Joins

Mệnh đề CROSS JOIN đã kết mỗi dòng của bảng 1 với tất cả các chiếc của bảng 2


Mệnh đề ON vào phép kết JOIN

Tách biệt phần đa kiện kết với những điều kiện tinh lọc dữ liệu khác.Các câu tróc nã vấn trở cần dễ gọi hơn.

Sử dụng mệnh đề JOIN …ON…

SELECT nv.manhanvien, nv.tennv, nv.maphong,ph.maphong, ph.makhuvucFROM qlns.nhanvien nv JOIN qlns.phong ph ON (nv.maphong = ph.maphong)

Kết nhiều hơn nữa hai bảng

SELECT manhanvien, tenphong, tenkhuvuc, thanhphoFROM qlns.nhanvien nv JOIN qlns.phong ph ON ph.maphong = nv.maphong JOIN qlns.khuvuc kv ON ph.makhuvuc = kv.makhuvuc

Phép kết trái (LEFT JOIN)

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphongFROM qlns.nhanvien nv LEFT OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong)

Phép kết phải (RIGHT JOIN)

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphongFROM qlns.nhanvien nv RIGHT OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong)

Phép kết không hề thiếu (FULL JOIN)

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphongFROM qlns.nhanvien nv FULL OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong)

Sử dụng biểu thức CASE trong truy vấn

CASE Biểu_thứcWHEN Giá_trị_1 THEN Biểu_thức_kết_quả_1WHEN Giá_trị_2 THEN Biểu_thức_kết_quả_2...>ENDGiá trị 1, giá trị 2Các giá chỉ trị ví dụ để so sánh bằng (=) cùng với biểu thứcBiểu thức kết quả 1, biểu thức công dụng 2Biểu thức sẽ tiến hành trả về lúc việc đối chiếu của biểu thức bởi với các giá trị đối chiếu tương ứng

Ví dụ

SELECT LOAI=CASE LEFT(MAVTU, 2) WHEN "DD" THEN "Đầu DVD" WHEN "VD" THEN "Đầu VCD" WHEN "TV" THEN "Tivi" WHEN "TL" THEN "Tủ lạnh" WHEN "BI" THEN "Bia lon" WHEN "LO" THEN "Loa thùng" ELSE "Chưa phân loại"END,MAVTU, TENVTU, DVTINHFROM VATTUORDER BY LEFT(MAVTU, 2)

Biểu thức CASE dạng search kiếm

CASEWHEN Bt_logic_1 THEN Biểu_thức_kết_quả_1ENDBiểu thức logic1, biểu thức logic2Các biểu thức luận lý dùng để thực hiện những phép đối chiếu trong biểu thức CASE.Biểu thức tác dụng 1, biểu thức hiệu quả 2Biểu thức sẽ tiến hành trả về lúc một trong những biểu thức luận lý so sánh có công dụng là đúng.

Ví dụ

SELECT GHICHU= CASE WHEN PHANTRAM

Bài tập

Hiển thị list các cụ thể phiếu xuất tất cả thêm các cột tên trang bị tư, ngày xuất.Lọc theo số lượng xuất to hơn 5 cùng ngày xuất trong thời điểm tháng 1/2009Hiển thị danh sách các nhà hỗ trợ gồm những thông tin sau: mã bên cung cấp, tên nhà cung cấp đã có đặt hàng. Chú ý: không được trùng gắn thêm dữ liệuHiển thị danh sách các đơn để hàng vừa mới đây nhất vào bảng DONDHHiển thị danh sách các nhà cung ứng mà chưa xuất hiện đơn để hàng-- Câu 1SELECT cx.*,vt.tenvtu,px.ngayxuatFROM ctpxuat AS cx INNER JOIN vattu AS vt ON cx.mavtu = vt.mavtu INNER JOIN pxuat AS px ON cx.sopx = px.sopxWHERE cx.slxuat > 5 and MONTH(px.ngayxuat) = 1 -- Câu 2SELECT DISTINCT cc.manhacc,cc.tennhaccFROM nhacc AS cc INNER JOIN dondh AS dh ON cc.manhacc = dh.manhacc -- Câu 3SELECT *FROM dondh AS dhORDER BY dh.ngaydh DESC -- Câu 4SELECT *FROM nhacc AS ccWHERE cc.manhacc NOT IN (SELECT dh.manhacc FROM dondh AS dh)

Bài viết tiếp theo