Câu lệnh JOIN trong SQL Excel: Kết nối nhiều bảng dữ liệu nhanh
Hướng dẫn toàn diện về câu lệnh JOIN trong SQL Excel (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN): giải pháp kết nối dữ liệu từ nhiều bảng và nhiều file Excel thay thế hoàn hảo cho hàm VLOOKUP chậm chạp.

1.Join là gì?
Join là một câu lệnh với nhiều kiểu khác nhau như: inner join, left join, right join,.. Câu lệnh join sẽ giúp bạn tạo ra bảng mới bằng cách lấu dữ liệu từ 2 hay nhiều bảng khác nhau với các điều kiện cho trước.
Join là một câu lệnh khá mạnh, được ứng dụng rất nhiều trong SQL . Hôm nay chúng ta sẽ cùng tìm hiểu về 2 loại join phổ biến là inner join và left join.
1.Inner join
Inner join là câu lệnh cho phép bạn lấy dữ liệu từ nhiều bảng mà trong đó dữ liệu có một hoặc một số tiêu chí tương đồng nhau
Cú pháp:
Join 2 bảng:
SELECT col_name(s)
FROM table1
INNER JOIN table2 ON table1.col_name = table2.col_name
Kết quả sau khi inner join 2 bảng
Join nhiều bảng:
Khi Join nhiều bảng với nhau, ta sẽ join lần lượt từng cặp mỗi cặp 2 bảng cho đến hết sau đó sẽ lấy phần chung của tất cả sau khi join từng cặp với nhau.
Trong ví dụ dưới dây chúng ta sẽ join 3 bảng:
Lần lượt chúng ta sẽ Join bảng 1 và 2. Sau khi join ta sẽ được phần chung màu vàng
Tạm gọi A1 = [1,2] là kết quả vùng vàng sau khi join bảng 1 và 2.
Tương tự ta có A2, A3 là kết quả khi join bảng [2,3] và [3,1]
Khi đã có A1, A2, A3 ta sẽ join chúng với nhau.
Kết quả Y = [A1, A2, A3]
Khi này Y chính là kết quả join giữa 3 bảng. Khi mở rộng ta sẽ có join n bảng. Tuy nhiên nguyên lí thực hiện vẫn tương tự join 3 bảng.
Từ đây ta có thể kết luận khi join càng nhiều bảng kết quả thu được sẽ càng nhỏ.
SELECT col_name(s)
FROM ((table1
INNER JOIN table2 ON table1.col_name = table2.col_name)
INNER JOIN table3 ON table1.col_name = table3.col_name)
Trong đó:
▪ table1: bảng dữ liệu thứ nhất
▪ table2: bảng dữ liệu thứ hai.
▪ table3: bảng dữ liệu thứ ba
Lưu ý: có bao nhiêu bảng (từ bảng thứ hai) INNER JOIN với bảng thứ nhất thì có bấy
nhiêu cặp dấu ngoặc “()” đơn sau FROM.
▪ Trong câu lệnh ON có thể kết hợp nhiều điều kiện bằng hàm AND
▪ Có thể áp dụng câu lệnh điều kiện WHERE/ORDER BY trong câu lệnh JOIN. WHERE
nên để sau khi kết thúc câu lệnh JOIN
2.Left join
Lấy dữ liệu từ nhiều bảng mà trong đó bảng thứ nhất được giữ nguyên, các bảng khác nếu có phần không thuộc bảng thứ nhất sẽ có giá tự là NULL
Cú pháp:
SELECT col_name(s)
FROM table1
LEFT JOIN table2 ON table1.col_name = table2.col_name;
Chúc các bạn thành công với 2 lệnh Join nói trên!
Mẹo Tối ưu Truy vấn SQL trong Excel VBA & Xử lý Lỗi Thường gặp
Khi triển khai câu lệnh truy vấn SQL thông qua kết nối ADODB.Connection trên nền tảng Microsoft Excel, bạn cần lưu ý 3 quy tắc vàng sau để đảm bảo tốc độ và độ chính xác tuyệt đối:
'' Chuỗi kết nối chuẩn hỗ trợ cả cột trộn kiểu dữ liệu Số và Văn bản (IMEX=1):
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & _
";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"
'' Quy tắc bọc tên Sheet và tên Cột có khoảng trắng hoặc tiếng Việt:
strSQL = "SELECT [Mã Hàng], [Tên Sản Phẩm], SUM([Thành Tiền]) AS TongTien " & _
"FROM [Data_BanHang$A1:G50000] " & _
"WHERE [Thành Tiền] IS NOT NULL " & _
"GROUP BY [Mã Hàng], [Tên Sản Phẩm]"
- Luôn thêm tham số
IMEX=1: Giúp trình điều khiển OLEDB không tự ý biến các mã hàng vừa có số vừa có chữ thành giá trịNull. - Giới hạn vùng dữ liệu khi Sheet có định dạng thừa: Thay vì gọi
[Sheet1$], bạn có thể chỉ định rõ[Sheet1$A1:Z50000]để bỏ qua các dòng rác cuối bảng. - Đóng kết nối sau khi
CopyFromRecordset: Luôn gọirs.Closevàcn.Closeđể giải phóng bộ nhớ RAM và tránh khóa file nguồn.
Bài viết liên quan
Thông báo
© 2021 CÔNG TY TNHH ERX VIỆT NAM
Địa chỉ văn phòng: 46/4 Nguyễn Cửu Vân, Phường 17, Quận Bình Thạnh, TP.HCM
share
tweet