Thứ Hai, 27 tháng 6, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 4 - Tạo và dùng truy vấn nối ngoại

James Perry, Richard Newmark


Chương 4
Tạo và dùng câu truy vấn


Tạo và dùng truy vấn nối ngoại


Khi nối hai bảng, bạn có thể thấy rằng một hay nhiều dòng trong một bảng không khớp với các dòng trong bảng kia. Các dòng không khớp có thể hé lộ thông tin quan trọng. Chẳng hạn, quản lý viên bán hàng có thể muốn biết liệu có nhân viên bán hàng nào chẳng bán được gì trong một chu kỳ cụ thể. Có những ví dụ khác về thông tin ẩn chứa trong cơ sở dữ liệu của bạn. Trong cơ sở dữ liệu Chương 4, chẳng hạn, bạn không thể dò ra những thành phố không có nhân viên bằng cách thi hành phép nối thông thường nối hai bảng tblEmployee tblEmployeeDivision trên việc so khớp khóa chính khóa ngoại. Thay vào đó, bạn tạo dạng thông tin này bằng cách dùng một truy vấn nối các bảng bằng phép nối ngoại (outer join), nhằm liệt kê tất cả các dòng trong một bảng và chỉ những dòng khớp ở bảng kia.

Bài tập kế sẽ chỉ cách tạo phép nối ngoại. Bắt đầu bằng việc dùng câu truy vấn bạn đã tạo ở Bài tập 4.10 có tên MyTotalSales. Bạn sẽ sửa thuộc tính nối của cả hai phép nối hiện thời để tạo nên phép nối ngoại. (Hai phép nối đó gọi là phép nối nội inner join). Câu truy vấn mới, khi hoàn tất, sẽ hé lộ tên các nhân viên bán hàng không bán được gì cả.

BÀI TẬP 4.11: TẠO MỘT TRUY VẤN NỐI NGOẠI

1. Hãy tạo một bản sao của MyTotalSales rồi đổi tên: Kích MyTotalSales trong Navigation Pane, nhấn Ctrl+C, nhấn Ctrl+V, gõ MyOuterJoin vào hộp thoại Paste As để đặt tên cho truy vấn vừa sao chép, rồi kích OK.

2. Kích phải MyOuterJoin rồi kích Design View.

3. Kích kép đường nối giữa hai khung tblEmployeetblInvoice ở phần trên cửa sổ truy vấn để mở hộp thoại Join Properties.

4. Chọn tùy chọn thứ hai trong hộp thoại (xem Hình 4.26), rồi kích OK. Bây giờ bạn cần thấy mũi tên trên đường nối trỏ từ khung tblEmployee đến khung tblInvoice, cho biết là bạn đã yêu cầu một phép nối ngoại với mọi bản ghi trong tblEmployee bất chấp có bản ghi tương ứng trong tblInvoice hay không.

Hình 4.26 Tạo một phép nối ngoại.

5. Lặp lại các bước 3 và 4 cho đường nối giữa các khung tblInvoice tblInvoiceLine.

6. Hiển thị truy vấn ở góc nhìn Datasheet, và cuộn màn hình nếu cần, để bạn có thể thấy các dòng 20 đến 22 của tập động dynaset. Để ý cột doanh thu Sales trống với Melinda English, Giles Bateman, và Brad Shoenstein. Nghĩa là họ không có bản ghi nào trong bảng tblInvoiceLine và vì thế không có doanh thu trong chu kỳ đó.

Ở bước kế, bạn sẽ bảo Access chỉ hiển thị những dòng có tổng doanh thu là trống.

7. Hiển thị truy vấn ở góc nhìn Design, chuyển đến dòng tiêu chí Criteria bên dưới cột Sales (tổng doanh thu), rồi gõ Is Null vào ô Criteria. Hiển thị truy vấn ở góc nhìn Datasheet. Nó hiển thị chỉ những nhân viên không báo cáo doanh thu trong chu kỳ đó. (Xem Hình 4.27.) Bạn có thể bỏ cột Sales trong truy vấn này – nó trống và bạn biết rõ – bằng cách xóa đánh dấu trong ô Show. Ta vẫn để đó để biết câu truy vấn hoạt động tốt.

Hình 4.27 Dùng Is Null để hiển thị các dòng có trường trống.

8. Lưu rồi đóng câu truy vấn.

Không có nhận xét nào:

Đăng nhận xét