Nguyen thi huyen trang
Nguyen thi huyen trang PRO
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 90 lượt xem

SQL FOR VBA WITH SQL_SELECT... LEFT JOIN

May 09 2022

Xem tài liệu đính kèm VBA for SQL references hoặc VBA for connection with SQL

SELECT SYNTAX

SELECT [tên cột] (nhiều cột)
FROM [tên bảng tính 1] 
LEFT JOIN [tên bảng tính 2]
ON [tên bảng tính 1].[tên cột] = [tên bảng tính 2].[tên cột]

Ở đây sẽ lấy toàn bộ dữ liệu bảng tính 1 và một phần chung của bảng tính 2. Kết quả sẽ trả về 0 nếu bảng tính 2 không có dữ liệu chung với Bảng tính 1

 

Bước 1: Đặt tên cho các bảng tính trong từng sheets phía dưới và tên các trường dữ liệu

Bước 2: Viết câu lệnh SQL theo cú pháp Select… Left Join. Ta cũng có thể kết hợp với Select… Inner Join

 

SELECT   [Orders].[Order ID], [Orders].[Customer Id],[Orders].[Order Date],[Customers].[Last Name], [Customers].[First Name],[Orders].[Shipping Fee],[HangHoa].[Shipper ID], [HangHoa].[TEN_HH]
 FROM (([Orders] LEFT JOIN [Customers] 

ON [Orders].[Customer ID] = [Customers].[ID])
INNER JOIN [HangHoa] ON [Orders].[Shipper ID] = [HangHoa].[Shipper ID])

TỪ KHÓA SELECT: CHỌN CÁC TRƯỜNG DỮ LIỆU [Order ID], [Customer Id], [Order Date], [Shipping Fee] trong bảng [ORDERS] và các trường [Last Name], [First Name] trong bảng [CUSTOMERS] và trường [Shipper ID], [TEN_HH] trong bảng [HangHoa]

TỪ KHÓA FROM: LẤY THÔNG TIN TỪ BẢNG [ORDERS] (BẢNG 1)

TỪ KHÓA LEFT JOIN: KẾT HỢP LẤY THÔNG TIN TỪ BẢNG [CUSTOMERS] (BẢNG 2)

TỪ KHÓA INNER JOIN: KẾT HỢP LẤY THÔNG TIN TỪ BẢNG [HangHoa] (BẢNG 3)

TỪ KHÓA ON: BẢNG 1 VÀ BẢNG 2 CÓ CHUNG TRƯỜNG [Customer ID], BẢNG 1 VÀ BẢNG 3 CÓ CHUNG TRƯỜNG [Shipper ID]

Bước 3: Thực hiện câu lệnh SQL để hiện thông tin về Mã khách hàng, Ngày đặt hàng và phí vận chuyển (trong bảng [Orders]), lấy Tên gọi và đệm trong bảng [Customers]) và mã nhân viên giao hàng, Tên Hàng hóa trong bảng [HangHoa]. Ở đây bảng [Orders] và [Customers] sẽ là kết nối Left Join nghĩa là một số thông tin không có trong bảng Customers sẽ trả về 0, còn bảng [Orders] vẫn lấy hết thông tin. Còn bảng [Orders] và bảng [HangHoa] là kết nối Inner Join nên cả hai bảng chỉ lấy phần giao nhau nghĩa là thông tin phải bắt buộc có trong 2 bảng mới lấy ra kết quả. Và đây là Kết quả:

 

Cùng tham gia cộng đồng hỏi đáp về chủ đề Lập trình

Thảo luận 0 câu trả lời
Lượt xem 90 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội