Gộp 2 Bảng Trong Sql

Mệnh đề Join vào SQL Server dùng làm kết nối các bảng, view, sub query lại cùng với nhau thông qua các foreign key hoặc những cột có giá trị tương ứng ở hai bảng, view hoặc những sub query.

Bạn đang xem: Gộp 2 bảng trong sql

ii. Chuẩn bị

Trước hết các bạn hãy tạo nên hai table rất dễ dàng và insert vào đó một ít dữ liệu như đoạn script sau:

create table Item( MaHang nvarchar(20) primary key, TenHang nvarchar(200))insert Item(MaHang, TenHang) values("NO1700", N"Điện thoại nokia 1700"), ("NO1200", N"Điện thoại nokia 1200"), ("IPHONE3", N"Điện thoại Iphone 3"), ("IPHONE4", N"Điện thoại Iphone 4"), ("IPHONE5", N"Điện thoại Iphone 5"), ("IPHONE6", N"Điện thoại Iphone 6")create table OrderDetail( ID int identity primary key, NgayDatHang datetime, MaHang nvarchar(20), SoLuong decimal(19,6) mặc định 0 not null)insert OrderDetail(NgayDatHang, MaHang, SoLuong) values("20140401", "NO1700", 5), ("20140402", "NO1700", 1), ("20140402", "IPHONE3", 2), ("20140401", "IPHONE4", 1), ("20140401","NO0001", 1000) bọn họ đã có 2 bảng dữ liệu với link như trên, vậy nếu còn muốn truy xuất đồng thời thông tin đặt hàng và thông tin hàng thì ta đề xuất làm thay nào? Đây đó là nhiệm vụ của links hay JOIN những bảng lại cùng với nhau.Trong SQL cung ứng các kiểu JOIN như sau:

1. INNER JOIN

INNER JOIN tốt viết tắt là JOIN trả về kết quả là tập hợp dữ liệu từ 2 bảng trong những số ấy giá trị dùng làm join đều phải có ở cả hai bảng, nói theo một cách khác kiểu join này như là phép giao trong tập hợpHình minh họa
*

Câu truy vấn SQL ví dụ như sau:SELECT t2.MaHang, t1.TenHang, t2.SoLuongFROM nhà cửa t1 INNER JOIN OrderDetail t2 ON t1.MaHang = t2.MaHang-- Hoặc dạng viết tắtSELECT t2.MaHang, t1.TenHang, t2.SoLuongFROM công trình t1 JOIN OrderDetail t2 ON t1.MaHang = t2.MaHangKết quả là tập vừa lòng sau:
*

Bốn mã hàng hóa ở cột MaHang đều có trong table item và table OrderDetail.

2. OUTER JOIN

a. LEFT OUTER JOIN


Viết tắt: LEFT JOINCó thể diễn giải LEFT JOIN vào SQL như sau: "Lấy toàn bộ các dòng dữ liệu ở table phía trái và hầu như dòng tài liệu ở bảng bên đề xuất CÓ quý hiếm MaHang tồn tại sinh sống bảng bên trái.".Kết trái minh họa như hình sau, hiệu quả trả về là hình oval màu sắc xanh:
*

SELECT t1.MaHang, t1.TenHang, t2.SoLuongFROM thắng lợi t1 LEFT JOIN OrderDetail t2 ON t1.MaHang = t2.MaHang
*

Một số dòng bao gồm SoLuong == null là do các MaHang này sẽ không tồn tại ngơi nghỉ bảng bên đề xuất (OrderDetail), nhưng bao gồm tồn tại ngơi nghỉ bảng phía bên trái (Item).
Viết tắt: RIGHT JOINTrái ngược với LEFT JOIN, RIGHT JOIN vào SQL hệ thống lấy toàn bộ dữ liệu của bảng bên cần và tài liệu của bảng phía trái nhưng giá trị cột JOIN cũng luôn có trong bảng bên phải.
Viết tắt: FULL JOINFULL OUTER JOIN trong SQL Server đó là kết trái gộp lại của tất cả hai table phía trái và mặt phải.Hình minh họa:
*

SELECT t1.MaHang, t1.TenHang, t2.SoLuongFROM sản phẩm t1 FULL JOIN OrderDetail t2 ON t1.MaHang = t2.MaHang
Quan sát công dụng trên có thể thấy:Các dòng gồm MaHang = null là do bảng bên cần (OrderDetail) có giá trị nhưng table phía trái (Item) không có giá trị MaHang tương ứng.Các dòng bao gồm SoLuong = null là do các sản phẩm IPHONE5, 6, NO1200 có trong bảng thành công nhưng không tồn tại dòng nào khớp ứng trong table OrderDetail.

Xem thêm: 4 Tuyến Đường Đi Vũng Tàu Bằng Xe Máy Gần Nhất !, Cách Đi Từ Sài Gòn Đến Vũng Tàu Nhanh Và Gần


d. CROSS JOIN

CROSS JOIN trong SQL ít được áp dụng hơn so với các loại JOIN ở trên vì tính ít ý nghĩa sâu sắc của nó, hiệu quả trả về của CROSS JOIN là rước số chiếc của bảng phía trái x số dòng của bảng mặt phải. Lấy ví dụ bảng Item tất cả 6 dòng, bảng OrderDetail bao gồm 5 dòng, kết quả trả về là 30 dòng.Dữ liệu được nhân lên do cứ tương ứng với cùng một dòng trong item thì đang nối với toàn thể 5 loại trong OrderDetail mà lại không cần cân nhắc tiêu chí đối chiếu nào (không bao gồm mệnh đề ON t1.ColumnA = t2.ColumnB như những kiểu JOIN khác). Cái này là phép nhân Đề các 2 quan hệ nam nữ với nhau.
Câu truy hỏi vấn:
SELECT t1.*, t2.*FROM thắng lợi t1 CROSS JOIN OrderDetail t2
Tương tự lúc như ta viết:SELECT t1.*, t2.*FROM cửa nhà t1, OrderDetail t2Kết quả trả về:
table('setting')->where("{$db->web}")->select('code_footer'); if($oh->code_footer){ # nếu có code header tùy chỉnh $code_footer = htmlspecialchars_decode($oh->code_footer); $code_footer = str_replace('[home_link]', $home, $code_footer); $code_footer = str_replace('[home_name]', $h, $code_footer); $code_footer = str_replace('[link]', $link, $code_footer); $code_footer = str_replace('[title]', $head->tit, $code_footer); $code_footer = str_replace('[des]', $head->des, $code_footer); $code_footer = str_replace('[key]', $head->key, $code_footer); $code_footer = str_replace('[image]', $head->img, $code_footer); $code_footer = str_replace('[link]', $link, $code_footer); $code_footer = str_replace('[date_Y]', date('Y'), $code_footer); echo $code_footer; } ?>