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 118 lượt xem

SQL FOR VBA WITH SQL_SELECT... INNER 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] 
INNER 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 ta có thể chọn 1 cột hoặc nhiều cột trong bảng tính 1 và bảng tính 2. Hai bảng tính này được liên kết với nhau thông qua 1 trường (cột) dữ liệu chung

HOẶC KẾT HỢP NHIỀU BẢNG TÍNH CÓ CHUNG TRƯỜNG DỮ LIỆU NHƯ SAU

SELECT [tên cột] (nhiều cột)
FROM 
(([tên bảng tính 1] 
INNER 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])
INNER JOIN [tên bảng tính 3]
ON [tên bảng tính 1].[tên cột] = [tên bảng tính 3].[tên cột])
...

HIỆN THÔNG TIN MỘT VÀI TRƯỜNG DỮ LIỆU TÙY CHỌN

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… Inner Join

SELECT   [Orders].[Order ID], [Orders].[Customer Id],[Customers].[Last Name], [Customers].[First Name],[Orders].[Shipping Fee]
 FROM [Orders] INNER JOIN [Customers] ON [Orders].[Customer ID] = [Customers].[ID]

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

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

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

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

Bước 3: Thực hiện câu lệnh SQL để hiện thông tin về Mã đơn hàng (trong bảng [Orders]), Mã Khách hàng (trong bảng [Customers]), Tên gọi Khách Hàng (trong bảng [Customers]), Tên Đệm của khách hàng (trong bảng [Customers]), và tiền phí vận chuyển (trong bảng [Orders]) thông qua trường chung là Mã khách hàng. Kết quả như sau:

Trong VD trên: Thông tin về Khách hàng có ID=2 không hiện ra trong bảng Kết quả. Vì Bảng Orders không có thông tin về khách hàng có ID=2 (chỉ có thông tin về Khách hàng ID =1, 3, 4…).Như vậy Kết nối Inner Join cho 2 bảng là lấy ra phần thông tin chung cho cả 2 bảng thông qua trường khóa ID Customer

HIỆN THÔNG TIN VỚI NHIỀU KẾT NỐI 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] 

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

Đây là 3 bảng [Order], [Customer] và [HangHoa]. Bảng [Order] và [Customer] liên kết với nhau bằng Mã khách hàng. Còn bảng [Order] và bảng [HangHoa] liên kết với nhau bằng Mã Shipper ID

Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA

Thảo luận 0 câu trả lời
Lượt xem 118 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