Câu Lệnh Inner Join 3 Bảng Trong Sql

Dẫn nhập

Trong bài trước, Kteam đã hướng dẫn bạn về LIKE và các cách truy vấn TÌM KIẾM GẦN ĐÚNG TRONG SQL. Tiếp theo, chúng ta sẽ bắt đầu tìm hiểu về JOIN, cụ thể trong bài này là INNER JOIN.

Bạn đang xem: Câu lệnh inner join 3 bảng trong sql

Nội dung chính

Để theo dõi tốt nhất bài này, bạn nên có kiến thức về:

Trong bài này, chúng ta sẽ cùng nhau tìm hiểu một số vấn đề sau:

Database mẫu Inner Join là gì? Inner Join 2 table trong SQL. Inner Join nhiều table trong SQL. Inner Join kết hợp điều kiện.

Database mẫu

Để thao tác tốt với bài này, chúng ta sử dụng database ucozfree.com sau:

Inner Join là gì?

INNER JOIN là mệnh đề truy vấn với kết quả trả về là tập hợp các dữ liệu thỏa mãn điều kiện chung từ 2 hay nhiều Table.

Điều kiện chung thường phụ thuộc liên kết khóa ngoại giữa hai Table.Mọi Inner Join đều bắt buộc phải có điều kiện sau ON

Ta dễ dàng liên tưởng đến Inner Join thông qua biểu đồ venn trong toán học về phép giao hai tập hợp. Với A, B đại diện cho dữ liệu trong 2 Table. Inner Join chính là kết quả của phép toán A giaoB

*

Inner Join 2 Table trong SQL

Cấu trúc:

SELECT

FROM INNER JOIN

ON . =.

Trong đó:

tên các column cần hiển thị ở kết quả truy vấn. Các column được ngăn cách với nhau bằng dấu phẩy (,), làtên các bảng để lấy dữ liệu khi truy vấn. thường là tên column khóa ngoại tham chiếu từ table A đến column định danh trong Table B hoặc ngược lại.

Lưu ý: Ta hoàn toàn có thể viết tắt INNER JOIN là JOIN trong câu truy vấn

So sánh giữa Inner Join kiểu cũ và mới

Để hiểu rõ hơn về INNER JOINcũng như so sánh giữa Inner Join kiểu cũ và kiểu mới, ta sử dụng Databaseucozfree.com ở đầu bài để tự thao tác trong quá trình theo dõi bài viết.

Ví dụ 1: Với yêu cầu xuất ra thông tin giáo viên và tên bộ môn mà giáo viên đó giảng dạy.

Ta xét sơ đồ CSDL gồm 2 Table GIAOVIEN và BOMON, tồn tại khóa ngoại liên kết columnMABM từ GIAOVIEN tham chiếu đến column MABM ở BOMON

*

Ta có thể thực hiện câu truy vấn này dưới hai cách sau:

*

Ví dụ khác

Ví dụ 2: Xuất ra thông tin giáo viên (mã GV và tên) và tên người thân tương ứng của giáo viên đó.

SELECT GV.MAGV,GV.HOTEN, NT.TEN AS "NGUOI THAN"FROM dbo.GIAOVIEN AS GV INNER JOIN dbo.NGUOITHAN AS NT ON NT.MAGV = GV.MAGVVí dụ 3: Xuất ra thông tin đề tài (mã DT, tên DT) và tên chủ đề của đề tài đó

SELECT DT.MADT,DT.TENDT,CD.TENCDFROM dbo.DETAI AS DT INNER JOIN dbo.CHUDE AS CD ON CD.MACD = DT.MACDVí dụ 4: Xuất ra thông tin đề tài (mã DT, tên DT) và tên giáo viên chủ nhiệm đề tài đó

SELECT DT.MADT,DT.TENDT, GV.HOTENFROM dbo.GIAOVIEN AS GV INNER JOIN dbo.DETAI AS DT ON DT.GVCNDT = GV.MAGV

Inner Join nhiều Table trong SQL

Cấu trúc:

SELECT

FROM

INNER JOIN ON

INNER JOIN ON ….

Xem thêm: "Bí Kíp" Trả Lời Câu Hỏi Phỏng Vấn: Điểm Yếu Của Bạn Là Gì Phỏng Vấn

Trong đó:

tên các bảng cột cần hiển thị ở kết quả truy vấn. Các column được ngăn cách với nhau bằng dấu phẩy (,), , làtên các bảng để lấy dữ liệu khi truy vấn., điều kiện để truy vấn Inner Join của Table A với các Table khác.

Tương tự như Join 2 Table, Inner join nhiều table cũng có tốc độ truy vấn nhanh hơn truy vấn có điều kiện (hay Inner Join kiểu cũ).

Ví dụ

Ví dụ 5: Với yêu cầu xuất ra thông tin giáo viên (mã GV, tên GV) và tên khoa mà giáo viên đó giảng dạy.

Ta xét sơ đồ CSDL gồm 3 Table KHOA, BOMON và GIAOVIEN tồn tại khóa ngoại như hình.

*

-- Xuất thông tin GV và Khoa mà GV đó giảng dạySELECT GV.MAGV,GV.HOTEN,K.TENKHOAFROM dbo.BOMON AS BM JOIN dbo.GIAOVIEN AS GV ON GV.MABM = BM.MABM JOIN dbo.KHOA AS K ON K.MAKHOA = BM.MAKHOAVí dụ 6: Với yêu cầu xuất ra tên đề tài và tên các giáo viên tham gia đề tài

Gợi ý: Bạn có thể dựa trên CSDL của 3 Table: DETAI, THAMGIADT và GIAOVIEN

SELECT DT.MADT, DT.TENDT,GV.HOTENFROM dbo.THAMGIADT AS TGDT INNER JOIN dbo.GIAOVIEN AS GV ON GV.MAGV = TGDT.MAGV INNER JOIN dbo.DETAI AS DT ON DT.MADT = TGDT.MADT

Inner Join kết hợp điều kiện

Bạn hoàn toàn có thể kết hợp INNER JOIN với các điều kiện khác nếu cần bằng mệnh đề WHEREtương tự ở bài TRUY VẤN CÓ ĐIỀU KIỆN

Ví dụ 7: Xuất ra thông tin các giáo viên nam, bộ môn và khoa mà giáo viên đó giảng dạy.

SELECT GV.MAGV,GV.HOTEN,GV.PHAI,BM.TENBM, K.TENKHOAFROM dbo.BOMON AS BM JOIN dbo.GIAOVIEN AS GV ON GV.MABM = BM.MABM JOIN dbo.KHOA AS K ON K.MAKHOA = BM.MAKHOAWHERE GV.PHAI ="NAM"Ví dụ 8: Xuất ra thông tin đề tài (Mã DT, tên DT) và tên giáo viên chủ nhiệm đề tài có ngày kết thúc trước năm 2009

SELECT DT.MADT,DT.TENDT, GV. HOTEN AS N"GV Chủ Nhiệm"FROM dbo.DETAI AS DT INNER JOIN dbo.GIAOVIEN AS GV ON GV.MAGV = DT.GVCNDTWHERE YEAR(NGAYKT)

Kết

Trong bài này, chúng ta đã tìm hiểu về INNER JOINtrong SQL Server.

Bài sau chúng ta sẽ tìm hiểu về FULL OUTER JOIN TRONG SQL.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập –Thử thách –Không ngại khó”.