Có 3 cách, sử dụng cách nào tuỳ theo tình trạng dữ liệu:
Cách 1:
Lập một Dictionanry. trường Key là tên hàng, trường value là một type gồm 2 biến: biến thứ nhất là đơn giá, biến thứ hai là tổng tiền.
- Đọc bảng 1 và ghi tên hàng vào key của Dictionary, ghi đơn giá vào phần đơn giá của value, và ghi 0 vào tổng tiền.
- Đọc bảng 2, tra tên hàng trong Dictionary, dùng đơn giá để tính số tiền và cộng vào tổng.
- Đọc Dictionary và lấy ra tổng tiền của từng món hàng
Cách này rất hiệu nghiệm khi bảng 1 khá nhỏ so với bảng 2
Cách 2:
- Dùng Resize để chuyển bảng 1 ra array1 và bảng 2 ra array2.
- Sort cả 2 arrays
- Đọc array2 và dò array1.
Vì cả 2 mảng đều đã được sorted cho nên lúc dò chỉ việc dò tới, không phải vòng lại. Và cách này chung chung thì áp dụng được với mọi hình dạng dữ liệu. Tuy với một vài dạng nào đó sẽ không nhanh bằng các cách kia.
Cách 3:
Dùng ADO để join 2 bảng và sử lý. Câu lệnh SQL như sau
SELECT bang1.maHang, SUM(soLuong*donGia) [tongTien]
FROM bang1 INNER JOIN bang2 ON bang1.maHang = bang2.maHang
GROUP BY bang1.maHang
Cách này rất hiệu nghiệm khi cả 2 bảng rất lớn