Top 9 # Xem Nhiều Nhất Cấu Trúc Join Hands Mới Nhất 3/2023 # Top Like | Comforttinhdauthom.com

Inner Join Trong Sql Server

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

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 HowKteam sau:

-- 1/ Tạo DB + Sử dụng DB Create Database HowKteam Go Use HowKteam Go -- 2/ Tạo các table + Khoá chính Create Table THAMGIADT ( MAGV nchar(3), MADT nchar(4), STT int, PHUCAP float, KETQUA nvarchar(10), Primary Key (MAGV,MADT,STT) ) go Create Table KHOA ( MAKHOA nchar (4), TENKHOA nvarchar (50), NAMTL int, PHONG char(3), DIENTHOAI char(10), TRUONGKHOA nchar(3), NGAYNHANCHUC datetime, primary key (MAKHOA) ) go create table BOMON ( MABM nchar(4), TENBM nchar (50), PHONG char(3), DIENTHOAI char(11), TRUONGBM nchar(3), MAKHOA nchar (4), NGAYNHANCHUC date, primary key (MABM) ) go create table CONGVIEC ( MADT nchar(4), SOTT int, TENCV nvarchar(50), NGAYBD datetime, NGAYKT datetime, primary key (MADT,SOTT) ) go create table DETAI ( MADT nchar(4), TENDT nvarchar(50), CAPQL nchar(20), KINHPHI float, NGAYBD date, NGAYKT date, MACD nchar(4), GVCNDT nchar(3), primary key (MADT) ) go create table CHUDE ( MACD nchar(4), TENCD nvarchar(30), primary key (MACD) ) go create table GIAOVIEN ( MAGV nchar(3), HOTEN nvarchar(50), LUONG float, PHAI nchar(3), NGSINH date, DIACHI nchar(50), GVQLCM nchar(3), MABM nchar(4), primary key (MAGV) ) go create table NGUOITHAN ( MAGV nchar(3), TEN nchar(12), NGSINH datetime, PHAI nchar(3), primary key (MAGV,TEN) ) go create table GV_DT ( MAGV nchar(3), DIENTHOAI char (10), primary key (MAGV,DIENTHOAI) ) go -- 3/ Tạo khoá ngoại --Tạo khoá ngoại ở bảng THAMGIADT Alter table THAMGIADT add constraint FK_HG1_MADT foreign key (MADT, STT) references CONGVIEC(MADT,SOTT) go --Tạo khóa ngoại ở bảng CONGVIEC Alter table CONGVIEC add constraint FK_HG2_MADT foreign key (MADT) references DETAI(MADT) go --Tạo khóa ngoại ở bảng DETAI Alter table DETAI add constraint FK_HG3_MACD foreign key (MACD) references CHUDE(MACD) go --Tạo khóa ngoại ở bảng DETAI Alter table DETAI add constraint FK_HG4_GVCNDT foreign key (GVCNDT) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng THAMGIADT Alter table THAMGIADT add constraint FK_HG5_MAGV foreign key (MAGV) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng GIAOVIEN Alter table GIAOVIEN add constraint FK_HG6_GVQLCM foreign key (GVQLCM) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng KHOA Alter table KHOA add constraint FK_HG7_TRUONGKHOA foreign key (TRUONGKHOA) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng NGUOITHAN Alter table NGUOITHAN add constraint FK_HG8_MAGV foreign key (MAGV) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng GIAOVIEN Alter table GIAOVIEN add constraint FK_HG9_MABM foreign key (MABM) references BOMON(MABM) go --Tạo khóa ngoại ở bảng BOMON Alter table BOMON add constraint FK_HG10_MAKHOA foreign key (MAKHOA) references KHOA(MAKHOA) go --Tạo khóa ngoại ở bảng BOMON Alter table BOMON add constraint FK_HG11_TRUONGBM foreign key (TRUONGBM) references GIAOVIEN(MAGV) go --Tạo khóa ngoại ở bảng GV_DT Alter table GV_DT add constraint FK_HG12_MAGV foreign key (MAGV) references GIAOVIEN(MAGV) go -- 4/ Nhập data --Nhập data cho bảng CHUDE Insert Into CHUDE(MACD,TENCD) values ('NCPT', N'Nghiên cứu phát triển') Insert Into CHUDE(MACD,TENCD) values ('QLGD', N'Quản lý giáo dục') Insert Into CHUDE(MACD,TENCD) values ('UDCN', N'Ứng dụng công nghệ') go --Nhập data cho bảng GIAOVIEN Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI) values ('001',N'Nguyễn Hoài An',2000.0,N'Nam','1973-02-15',N'25/3 Lạc Long Quân, Q.10,TP HCM') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI) values ('002',N'Trần Trà Hương',2500.0,N'Nữ','1960-06-20',N'125 Trần Hưng Đạo, Q.1, TP HCM') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM) values ('003',N'Nguyễn Ngọc Ánh',2200.0,N'Nữ','1975-05-11',N'12/21 Võ Văn Ngân Thủ Đức, TP HCM',N'002') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI) values ('004',N'Trương Nam Sơn',2300.0,N'Nam','1959-06-20',N'215 Lý Thường Kiệt,TP Biên Hòa') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI) values ('005',N'Lý Hoàng Hà',2500.0,N'Nam','1954-10-23',N'22/5 Nguyễn Xí, Q.Bình Thạnh, TP HCM') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM) values ('006',N'Trần Bạch Tuyết',1500.0,N'Nữ','1980-05-20',N'127 Hùng Vương, TP Mỹ Tho',N'004') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI) values ('007',N'Nguyễn An Trung',2100.0,N'Nam','1976-06-05',N'234 3/2, TP Biên Hòa') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM) values ('008',N'Trần Trung Hiếu',1800.0,N'Nam','1977-08-06',N'22/11 Lý Thường Kiệt,TP Mỹ Tho',N'007') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM) values ('009',N'Trần Hoàng nam',2000.0,N'Nam','1975-11-22',N'234 Trấn Não,An Phú, TP HCM',N'001') Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM) values ('010',N'Phạm Nam Thanh',1500.0,N'Nam','1980-12-12',N'221 Hùng Vương,Q.5, TP HCM',N'007') go --Nhập data cho bảng DETAI Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('001',N'HTTT quản lý các trường ĐH',N'ĐHQG',20.0,'2007-10-20','2008-10-20',N'QLGD','002') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('002',N'HTTT quản lý giáo vụ cho một Khoa',N'Trường',20.0,'2000-10-12','2001-10-12',N'QLGD','002') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('003',N'Nghiên cứu chế tạo sợi Nanô Platin',N'ĐHQG',300.0,'2008-05-15','2010-05-15',N'NCPT','005') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('004',N'Tạo vật liệu sinh học bằng màng ối người',N'Nhà nước',100.0,'2007-01-01','2009-12-31',N'NCPT','004') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('005',N'Ứng dụng hóa học xanh',N'Trường',200.0,'2003-10-10','2004-12-10',N'UDCN','007') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('006',N'Nghiên cứu tế bào gốc',N'Nhà nước',4000.0,'2006-10-12','2009-10-12',N'NCPT','004') Insert Into DETAI(MADT,TENDT,CAPQL,KINHPHI,NGAYBD,NGAYKT,MACD,GVCNDT) values ('007',N'HTTT quản lý thư viện ở các trường ĐH',N'Trường',20.0,'2009-05-10','2010-05-10',N'QLGD','001') go --Nhập data cho bảng CONGVIEC Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('001',1,N'Khởi tạo và Lập kế hoạch','2007-10-20','2008-12-20') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('001',2,N'Xác định yêu cầu','2008-12-21','2008-03-21') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('001',3,N'Phân tích hệ thống','2008-03-22','2008-05-22') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('001',4,N'Thiết kế hệ thống','2008-05-23','2008-06-23') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('001',5,N'Cài đặt thử nghiệm','2008-06-24','2008-10-20') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('002',1,N'Khởi tạo và lập kế hoạch','2009-05-10','2009-07-10') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('002',2,N'Xác định yêu cầu','2009-07-11','2009-10-11') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('002',3,N'Phân tích hệ thống','2009-10-12','2009-12-20') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('002',4,N'Thiết kế hệ thống','2009-12-21','2010-03-22') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('002',5,N'Cài đặt thử nghiệm','2010-03-23','2010-05-10') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('006',1,N'Lấy mẫu','2006-10-20','2007-02-20') Insert Into CONGVIEC(MADT,SOTT,TENCV,NGAYBD,NGAYKT) values ('006',2,N'Nuôi cấy','2007-02-21','2008-09-21') go --Nhập data cho bảng THAMGIADT Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP) values ('001','002',1,0.0) Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP) values ('001','002',2,2.0) Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('002','001',4,2.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('003','001',1,1.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('003','001',2,0.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('003','001',4,1.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP) values ('003','002',2,0.0) Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('004','006',1,0.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('004','006',2,1.0,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP,KETQUA) values ('006','006',2,1.5,N'Đạt') Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP) values ('009','002',3,0.5) Insert Into THAMGIADT(MAGV,MADT,STT,PHUCAP) values ('009','002',4,1.5) go --Nhập data cho bảng KHOA Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC) values (N'CNTT',N'Công nghệ thông tin',1995,'B11','0838123456','002','2005-02-20') Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC) values (N'HH',N'Hóa học',1980,'B41','0838456456','007','2001-10-15') Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC) values (N'SH',N'Sinh học',1980,'B31','0838454545','004','2000-10-11') Insert Into KHOA(MAKHOA,TENKHOA,NAMTL,PHONG,DIENTHOAI,TRUONGKHOA,NGAYNHANCHUC) values (N'VL',N'Vật lý',1976,'B21','0838223223','005','2003-09-18') go --Nhập data cho bảng NGUOITHAN Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('001',N'Hùng','1990-01-14',N'Nam') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('001',N'Thủy','1994-12-08',N'Nữ') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('003',N'Hà','1998-09-03',N'Nữ') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('003',N'Thu','1998-09-03',N'Nữ') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('007',N'Mai','2003-03-26',N'Nữ') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('007',N'Vy','2000-02-14',N'Nữ') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('008',N'Nam','1991-05-06',N'Nam') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('009',N'An','1996-08-19',N'Nam') Insert Into NGUOITHAN(MAGV,TEN,NGSINH,PHAI) values ('010',N'Nguyệt','2006-01-14',N'Nữ') go --Nhập data cho bảng GV_DT Insert Into GV_DT(MAGV,DIENTHOAI) values ('001','0838912112') Insert Into GV_DT(MAGV,DIENTHOAI) values ('001','0903123123') Insert Into GV_DT(MAGV,DIENTHOAI) values ('002','0913454545') Insert Into GV_DT(MAGV,DIENTHOAI) values ('003','0838121212') Insert Into GV_DT(MAGV,DIENTHOAI) values ('003','0903656565') Insert Into GV_DT(MAGV,DIENTHOAI) values ('003','0937125125') Insert Into GV_DT(MAGV,DIENTHOAI) values ('006','0937888888') Insert Into GV_DT(MAGV,DIENTHOAI) values ('008','0653717171') Insert Into GV_DT(MAGV,DIENTHOAI) values ('008','0913232323') go --Nhập data cho bảng BOMON Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA) values (N'CNTT',N'Công nghệ tri thức','B15','0838126126',N'CNTT') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA) values (N'HHC',N'Hóa hữu cơ','B44','0838222222',N'HH') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA) values (N'HL',N'Hóa Lý','B42','0838878787',N'HH') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC) values (N'HPT',N'Hóa phân tích','B43','0838777777','007',N'HH','2007-10-15') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC) values (N'HTTT',N'Hệ thống thông tin','B13','0838125125','002',N'CNTT','2004-09-20') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC) values (N'MMT',N'Mạng máy tính','B16','0838676767','001',N'CNTT','2005-05-15') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA) values (N'SH',N'Sinh hóa','B33','0838898989',N'SH') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,MAKHOA) values (N'VLĐT',N'Vật lý điện tử','B23','0838234234',N'VL') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC) values (N'VLUD',N'Vật lý ứng dụng','B24','0838454545','005',N'VL','2006-02-18') Insert Into BOMON(MABM,TENBM,PHONG,DIENTHOAI,TRUONGBM,MAKHOA,NGAYNHANCHUC) values (N'VS',N'Vi Sinh','B32','0838909090','004',N'SH','2007-01-01') go --Cập nhật thêm dữ liệu cho bảng GIAOVIEN update GIAOVIEN set MABM = 'MMT' where (MAGV = '001') update GIAOVIEN set MABM = 'HTTT' where (MAGV = '002') update GIAOVIEN set MABM = 'HTTT' where (MAGV = '003') update GIAOVIEN set MABM = 'VS' where (MAGV = '004') update GIAOVIEN set MABM = N'VLĐT' where (MAGV = '005') update GIAOVIEN set MABM = 'VS' where (MAGV = '006') update GIAOVIEN set MABM = 'HPT' where (MAGV = '007') update GIAOVIEN set MABM = 'HPT' where (MAGV = '008') update GIAOVIEN set MABM = 'MMT' where (MAGV = '009') update GIAOVIEN set MABM = 'HPT' where (MAGV = '010') GO

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 giao B

Inner Join 2 Table trong SQL

Cấu trúc:

Trong đó:

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 Database HowKteam ở đầ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 column MABM 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, chúng tôi AS "NGUOI THAN" FROM dbo.GIAOVIEN AS GV INNER JOIN dbo.NGUOITHAN AS NT ON chúng tôi = GV.MAGV SELECT DT.MADT,DT.TENDT,CD.TENCD FROM dbo.DETAI AS DT INNER JOIN dbo.CHUDE AS CD ON chúng tôi = chúng tôi

Ví 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.HOTEN FROM 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:

Trong đó:

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ạy SELECT GV.MAGV,GV.HOTEN,K.TENKHOA FROM dbo.BOMON AS BM JOIN dbo.GIAOVIEN AS GV ON chúng tôi = chúng tôi JOIN chúng tôi AS K ON K.MAKHOA = BM.MAKHOA

Ví 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.HOTEN FROM dbo.THAMGIADT AS TGDT INNER JOIN dbo.GIAOVIEN AS GV ON chúng tôi = chúng tôi INNER JOIN dbo.DETAI AS DT ON chúng tôi = TGDT.MADT

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

Bạn hoàn toàn có thể kết hợp với các điều kiện khác nếu cần bằng mệnh đề tươ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.TENKHOA FROM dbo.BOMON AS BM JOIN dbo.GIAOVIEN AS GV ON chúng tôi = chúng tôi JOIN chúng tôi AS K ON K.MAKHOA = BM.MAKHOA WHERE chúng tôi ='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 chúng tôi = DT.GVCNDT WHERE YEAR(NGAYKT) < 2009

Kết

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

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

Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Inner Join trong SQL Server dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.

Chi Tiết Bài Học 02. Join Trong Sql

02. JOIN trong SQL

Giống như tên của của nó, JOIN có nghĩa là kết hợp những thứ gì đó. Ở trong SQL thì JOIN là kết hợp nội dung của hai hay nhiều hơn các bảng dữ liệu.

SQL chuẩn ANSI đưa ra các loại JOIN sau:

Inner JOIN

Left outer JOIN

Right outer JOIN

Full outer JOIN

Cross JOIN

Khi bạn muốn truy cập hai hay nhiều bảng trong một lệnh SELECT.

Khi bạn muốn kết hợp dữ liệu của nhiều bảng thành một bảng và sau khi JOIN bạn có thể thao tác với các bảng đã JOIN như một bảng đơn.

Việc kết hợp hai hay nhiều bảng phụ thuộc vào trường dữ liệu chung giữa hai bảng.

Inner JOIN là kỹ thuật đơn giản và hay được sử dụng nhất trong SQL. Khi ta không nhắc gì đến loại của JOIN thì ta có thể coi đó là JOIN thông thường hoặc inner JOIN.

Xét ví dụ triển khai quá trình JOIN trong SQL, ta có hai bảng dữ liệu chứa các bản ghi của các nhân viên và bảng lương của họ trong một bộ phận.

Bảng “Nhan_vien”:

Bảng “Luong”:

Các bạn hãy xem kết quả của lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong FROM Nhan_vien n, Luong l WHERE chúng tôi =l.Ma_nhan_vien;

Như bạn thấy ở hình trên, một bảng dữ liệu mới được tạo ra dựa trên dữ liệu của hai bảng “Nhan_vien” và “Luong”.

Câu lệnh trong ví dụ trên sẽ có chung kết quả với các câu lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong FROM Nhan_vien n INNER JOIN Luong l WHERE chúng tôi =l.Ma_nhan_vien;

Hoặc

SELECT Ma_nhan_vien, Ten, Tuoi, Luong FROM Nhan_vien n INNER JOIN Luong l ON chúng tôi =l.Ma_nhan_vien;

Outer Join là cách dữ liệu của tất cả các bảng được kết hợp lại với nhau cho dù là chúng có điểm chung nào hay không.

Xét hai bảng dữ liệu T1 và T2 lần lượt như sau:

Outer JOIN bao gồm các loại:

Giả sử ta muốn full outer JOIN hai bảng dữ liệu T1 và T2 ở trên với câu lệnh:

SELECT * FROM T1 FULL OUTER JOIN T2 ON T1.T1C = T2.T2C

Kết quả thu được bởi câu lệnh trên là một bảng tạm có dạng như sau:

Để tìm hiểu kĩ hơn về left JOIN và right JOIN bạn có thể tìm hiểu ở bài sau.

Báo lỗi trang

Cấu Trúc Pretend, Cấu Trúc Intend, Cấu Trúc Guess

∠ ĐỌC THÊM Cấu trúc regret, cấu trúc remember, cấu trúc forget

∠ ĐỌC THÊM Cấu trúc, cách dùng Đảo ngữ trong tiếng Anh

Pretend trong tiếng Việt mang nghĩa là giả vờ, giải bộ.

1.1 Pretend to do something

Cấu trúc này được sử dụng để diễn tả việc chủ thể đã giả vờ, giả bộ hay ngụy tạo một hành động, một việc nào đó có mục đích và muốn người khác tin rằng điều đó là sự thật.

1.2 Những cấu trúc pretend thường gặp

Những cấu trúc pretend này được sử dụng để tuyên bố, đòi hỏi, giả vờ hay làm một việc gì đó.

Khoá học TOEIC trực tuyến của ELIGHT ONLINE được xây dựng dựa trên lộ trình dành cho người mất gốc. Bạn có thể học mọi lúc mọi nơi hơn 200 bài học, cung cấp kiến thức toàn diện, dễ dàng tiếp thu với phương pháp Gamification.

Khoá học trực tuyến dành cho:

☀ Các bạn mất gốc Tiếng Anh hoặc mới bắt đầu học Tiếng Anh nhưng chưa có lộ trình ôn thi TOEIC phù hợp

☀ Các bạn có quỹ thời gian eo hẹp nhưng vẫn mong muốn thi lấy chứng chỉ TOEIC với điểm cao

☀ Các bạn muốn tiết kiệm chi phí ôn thi TOEIC nhưng vẫn đạt hiệu quả cao

Intend trong tiếng Việt mang nghĩa là dự định, có ý muốn, có ý định.

2.1 Intend to do something

Cấu trúc intend này được sử dụng khi chủ thể có dự định, ý định làm gì đó và những ý định này được lên sẵn kế hoạch hay hướng đến một mục đích nào đó.

Chú ý: Intend doing something

Cấu trúc intend này cũng được dùng để diễn tả việc có ý định, dự định làm gì đó.

2.2 Một số cấu trúc Intend khác thường gặp.

Cấu trúc intend này được sử dụng để diễn tả việc sự định, dự kiến của ai đó sẽ nhận hoặc chịu tác động của cái gì.

Cấu trúc intend này được dùng khi chủ thể dự kiến về một cái gì đó sẽ ra sao hoặc như thế nào.

Cấu trúc intend này được sử dụng khi chủ thể dự kiến cái gì sẽ có ý nghĩa nào đó.

Guess trong tiếng Việt mang nghĩa là dự đoán, phỏng đoán, đoán.

Cấu trúc guess được sử dụng khi chủ thể cố gắng đưa ra nhận định hay câu trả lời về một nhận định nào đó nhưng không chắc chắn.

Cấu trúc guess được dùng khi chủ thể muốn tìm ra câu trả lời đúng cho một câu hỏi hay một sự thật nào đó mà chủ thể chưa biết chắc.

Ví dụ: You would never guess (that) he had problems. He is always so cheerful.

(bạn sẽ không bao giờ đoán được anh ấy có vấn đề. Anh ấy luôn vui vẻ.)

Where do you… going for your holidays this year?

I can … the results.

What do you … to do now?

He didn’t … to kill his idea.

He … pretended an interest he did not feel.

You will never … who I saw yesterday!

Sách Tiếng Anh Cơ Bản là bộ học liệu độc quyền do Elight xây dựng, cung cấp đầy đủ kiến thức nền tảng tiếng Anh bao gồm Phát Âm, Từ Vựng, Ngữ Pháp và lộ trình ôn luyện bài bản 4 kỹ năng Nghe, Nói, Đọc Viết.

Bộ sách này dành cho:

☀ Học viên cần học vững chắc nền tảng tiếng Anh, phù hợp với mọi lứa tuổi.

☀ Học sinh, sinh viên cần tài liệu, lộ trình tỉ mỉ để ôn thi cuối kỳ, các kì thi quốc gia, TOEIC, B1…

☀ Học viên cần khắc phục điểm yếu về nghe nói, từ vựng, phản xạ giao tiếp Tiếng Anh.

Tìm Hiểu Về Cấu Trúc Enjoy, Cấu Trúc Like, Cấu Trúc Hate

∠ ĐỌC THÊM Cấu trúc Spend: Spend Time, Spend Money, Spend + to V hay + V-ing?

1.2. Enjoy + doing + something

Cấu trúc enjoy này được sử dụng để diễn tả hoặc nói về sự vui thích, thích thú khi bạn được làm một việc gì đó.

Chú ý: Động từ enjoy được chia theo ngôi của chủ ngữ.

Khoá học trực tuyến ELIGHT ONLINE được xây dựng dựa trên lộ trình dành cho người mất gốc. Bạn có thể học mọi lúc mọi nơi hơn 200 bài học, cung cấp kiến thức toàn diện, dễ dàng tiếp thu với phương pháp Gamification.

Khoá học trực tuyến dành cho:

☀ Các bạn mất gốc Tiếng Anh hoặc mới bắt đầu học Tiếng Anh nhưng chưa có lộ trình phù hợp.

☀ Các bạn có quỹ thời gian eo hẹp nhưng vẫn mong muốn giỏi Tiếng Anh.

☀ Các bạn muốn tiết kiệm chi phí học Tiếng Anh nhưng vẫn đạt hiệu quả cao

1.3. Enjoy + myself, yourself, himself, herself…

Cấu trúc enjoy này được dùng khi muốn diễn tả sự vui vẻ, thích thú, hạnh phúc hay sự hào hứng khi ở trong một trạng thái, trường hợp nào đó.

Chú ý:Enjoy yourself có thể đứng độc lập thay lời chúc dành cho người nào đó. Ngoài ra bạn cũng có thể sử dụng enjoy yourself để thể hiện sự hồi đáp những lời chúc được nhận từ người khác. Lúc đó câu sẽ mang nghĩa là lời cám ơn.

Like cũng được hiểu khi nói về sự thích thú, niềm yêu thích một điều gì, cái gì đó.

Cấu trúc like này được dùng để nói về sở thích, niềm đam mê cá nhân mang tính lâu dài và hưởng thụ. Việc đó mang lại cho bạn niềm vui, sự thư giãn dù không đem lại lợi ích gì.

Cấu trúc like này được dùng trong 3 trường hợp sau:

Diễn tả một sở thích xảy ra nhất thời, mang tính bộc phát và không duy trì lâu dài.

Khi diễn tả một việc nào đó bạn nên làm bởi bạn cảm thấy đó là việc đúng đắn theo lẽ thường, tiêu chuẩn xã hội và mang lại lợi ích cho bạn.

Ví dụ: She likes to read book. (Cô ấy thích đọc sách vì sách mang lại lợi ích cho cô ấy.)

Dùng để nói về việc phải lựa chọn giữa hai hoặc nhiều việc khác nhau. Bạn thích việc này hơn việc kia.

Ví dụ: Between apple and strawberry, I like to eat strawberry. (Giữa táo và dâu, tôi thích ăn dâu hơn.)

3.1 Hate + doing + something

Cấu trúc hate này được sử dụng khi diễn tả một việc gì đó mà bạn không hề thích nhưng đã diễn ra như một thói quen, mang tính lâu dài.

Cấu trúc hate này được sử dụng để nói về việc gì đó mà bạn không hề thích và diễn ra trong một tình huống nhất thời, không mang tính lâu dài.

I hate to think what would have happened if you hadn’t come . (Tôi ghét nghĩ rằng điều gì đó sẽ xảy ra nếu bạn không đến.)

Chia động từ trong ngoặc.

(enjoy) your dinner, the man said.

They like ( play) games but hate ( do) homework.

Have I ever told her how much I (enjoy)eating Burger?

She hates (see) him suffering like this.

He likes (think) carefully about things before (do) it.

Đáp án: 1 – enjoy, 2 – playing – doing, 3 – enjoy, 4 – to see, 5 – to think – doing.

∠ ĐỌC THÊM ∠ ĐỌC THÊM Cấu trúc regret, cấu trúc remember, cấu trúc forget Tìm hiểu về cấu trúc need, cấu trúc demand, cấu trúc want trong tiếng Anh

Sách Tiếng Anh Cơ Bản là bộ học liệu độc quyền do Elight xây dựng, cung cấp đầy đủ kiến thức nền tảng tiếng Anh bao gồm Phát Âm, Từ Vựng, Ngữ Pháp và lộ trình ôn luyện bài bản 4 kỹ năng Nghe, Nói, Đọc Viết.

Bộ sách này dành cho:

☀ Học viên cần học vững chắc nền tảng tiếng Anh, phù hợp với mọi lứa tuổi.

☀ Học sinh, sinh viên cần tài liệu, lộ trình tỉ mỉ để ôn thi cuối kỳ, các kì thi quốc gia, TOEIC, B1…

☀ Học viên cần khắc phục điểm yếu về nghe nói, từ vựng, phản xạ giao tiếp Tiếng Anh.