Tạo truy vấn dựa trên nhiều bảng

Đôi khi, quá trình xây dựng và sử dụng truy vấn trong Access là một vấn đề đơn giản trong việc chọn trường từ một bảng, có thể áp dụng một số tiêu chí, rồi xem kết quả. Tuy nhiên, điều gì sẽ xảy ra nếu như dữ liệu bạn cần thường xuyên phân tán trong hai bảng trở lên? Rất may, bạn có thể xây dựng một truy vấn kết hợp các thông tin từ nhiều nguồn. Chủ đề này khám phá một số kịch bản nơi bạn kéo dữ liệu từ hai bảng trở lên và trình bày cách bạn thực hiện thao tác đó.

Bạn muốn làm gì?

Sử dụng dữ liệu từ bảng liên quan để cải thiện thông tin trong truy vấn của mình

Kết nối dữ liệu trong hai bảng bằng cách sử dụng mối quan hệ của hai bảng đó với bảng thứ ba

Xem tất cả các bản ghi từ hai bảng tương tự

Sử dụng dữ liệu từ bảng liên quan để cải thiện thông tin trong truy vấn của bạn

Bạn có thể gặp các trường hợp, trong đó truy vấn được dựa trên một bảng sẽ cung cấp cho bạn thông tin bạn cần, tuy nhiên, việc kéo dữ liệu từ một bảng khác sẽ giúp kết quả truy vấn trở nên thậm chí rõ ràng và hữu ích hơn. Ví dụ: giả sử bạn có danh sách ID nhân viên xuất hiện trong kết quả truy vấn. Bạn nhận ra rằng sẽ hữu ích hơn nếu xem tên nhân viên trong kết quả, tuy nhiên, tên nhân viên lại nằm trong một bảng khác. Để tên nhân viên xuất hiện trong kết quả truy vấn, bạn cần đưa cả hai bảng vào truy vấn của mình.

Sử dụng Trình hướng dẫn Truy vấn để tạo truy vấn từ một bảng chính và một bảng liên quan

  1. Đảm bảo rằng các bảng có mối quan hệ đã xác định trong Cửa sổ mối quan hệ.

    Cách thực hiện?

    1. Trên tab Công cụ Cơ sở dữ liệu, trong nhóm Hiển thị/Ẩn, bấm vào mục Mối quan hệ.

    2. Trên tab Thiết kế, trong nhóm Mối quan hệ, bấm vào mục Tất cả các Mối quan hệ.

    3. Xác định các bảng cần có mối quan hệ xác định.

      • Nếu các bảng được hiển thị trong cửa sổ Mối quan hệ, hãy kiểm tra xem mối quan hệ đã được xác định chưa.

        Mối quan hệ sẽ xuất hiện dưới dạng một đường kết nối hai bảng trên một trường chung. Bạn có thể bấm đúp vào đường mối quan hệ để xem trường nào trong bảng được kết nối bằng mối quan hệ.

      • Nếu các bảng không hiển thị trong cửa sổ Mối quan hệ, bạn phải thêm các bảng đó.

        Trên tab Thiết kế, trong nhóm Hiển thị/Ẩn, bấm vào mục Tên Bảng.

        Bấm đúp vào từng bảng bạn muốn hiển thị, rồi bấm vào mục Đóng.

    4. Nếu bạn không tìm thấy mối quan hệ giữa hai bảng, hãy tạo mối quan hệ bằng cách kéo một trường từ một trong các bảng đến một trường trong bảng khác. Các trường mà bạn tạo mối quan hệ giữa các bảng phải có kiểu dữ liệu giống nhau.

      Lưu ý: Bạn có thể tạo mối quan hệ giữa một trường thuộc Kiểu dữ liệu AutoNumber và một trường thuộc Kiểu dữ liệu số nếu trường đó có kích cỡ trường số nguyên dài. Điều này thường sẽ xảy ra khi bạn đang tạo một quan hệ một - nhiều.

      Hộp thoại Chỉnh sửa Mối quan hệ xuất hiện.

    5. Bấm vào Tạo để tạo mối quan hệ.

      Để biết thêm thông tin về các tùy chọn bạn có khi tạo mối quan hệ, xem bài viết Tạo, chỉnh sửa hoặc xóa mối quan hệ.

    6. Đóng cửa sổ Mối quan hệ.

  2. Trên tab Tạo, trong nhóm Truy vấn, bấm vào Trình hướng dẫn Truy vấn. Lưu ý rằng nếu bạn đang sử dụng Access 2007, trên tab Tạo, trong nhóm Khác, hãy bấm vào Trình hướng dẫn Truy vấn.

  3. Trong hộp thoại Truy vấn Mới, bấm vào mục Trình hướng dẫn Truy vấn Đơn giản, rồi bấm OK.

  4. Trong hộp tổ hợp Bảng/Truy vấn, bấm vào bảng có chứa thông tin cơ bản bạn muốn tích hợp trong truy vấn của mình.

  5. Trong danh sách Trường Sẵn có, bấm vào trường đầu tiên bạn muốn đưa vào truy vấn, rồi bấm vào nút mũi tên phải duy nhất để di chuyển trường đó đến danh sách Trường được Chọn. Thực hiện tương tự với mỗi trường bổ sung từ bảng bạn muốn đưa vào truy vấn. Đây có thể những trường bạn muốn nhận được trong đầu ra truy vấn hoặc những trường mà bạn muốn sử dụng để giới hạn các hàng trong đầu ra bằng cách áp dụng tiêu chí.

  6. Trong hộp tổ hợp Bảng/Truy vấn, bấm vào bảng có chứa dữ liệu liên quan bạn muốn cải thiện trong kết quả truy vấn.

  7. Thêm trường bạn muốn sử dụng để cải thiện kết quả truy vấn của mình vào danh sách Trường được Chọn, rồi bấm vào Tiếp theo.

  8. Bên dưới Bạn có muốn truy vấn chi tiết hoặc tóm tắt không?, bấm vào Chi tiết hoặc Tóm tắt.

    Chọn truy vấn chi tiết nếu bạn không muốn truy vấn của mình thực hiện bất cứ hàm tổng hợp nào (Sum, Avg, Min, Max, Count, StDev hoặc Var). Chọn truy vấn tóm tắt nếu bạn muốn truy vấn của mình thực hiện hàm tổng hợp. Sau khi thực hiện lựa chọn của mình, bạn bấm vào Tiếp theo.

  9. Bấm vào Hoàn tất để xem kết quả.

Ví dụ sử dụng cơ sở dữ liệu mẫu Northwind

Trong ví dụ sau đây, bạn sử dụng Trình hướng dẫn Truy vấn để tạo một truy vấn sẽ hiển thị danh sách các đơn hàng, phí vận chuyển của từng đơn hàng và tên nhân viên xử lý từng đơn hàng.

Lưu ý: Ví dụ này liên quan đến việc sửa đổi cơ sở dữ liệu mẫu Northwind. Bạn có thể muốn tạo một bản sao dự phòng cơ sở dữ liệu mẫu Northwind, rồi làm theo ví dụ này bằng cách sử dụng bản sao dự phòng đó.

Sử dụng Trình hướng dẫn Truy vấn để tạo truy vấn

  1. Mở cơ sở dữ liệu mẫu Northwind. Đóng biểu mẫu đăng nhập.

  2. Trên tab Tạo, trong nhóm Truy vấn, bấm vào Trình hướng dẫn Truy vấn. Lưu ý rằng nếu bạn đang sử dụng Access 2007, trên tab Tạo, trong nhóm Khác, hãy bấm vào Trình hướng dẫn Truy vấn.

  3. Trong hộp thoại Truy vấn Mới, bấm vào mục Trình hướng dẫn Truy vấn Đơn giản, rồi bấm OK.

  4. Trong hộp tổ hợp Bảng/Truy vấn, bấm vào Bảng: Đơn hàng.

  5. Trong danh sách Trường Sẵn có, bấm đúp vào ID_Đơn_hàng để di chuyển trường đó đến danh sách Trường được Chọn. Bấm đúp vào Phí Vận chuyển để di chuyển trường đó đến danh sách Trường được Chọn.

  6. Trong hộp tổ hợp Bảng/Truy vấn, bấm vào Bảng: Nhân viên.

  7. Trong danh sách Trường Sẵn có, bấm đúp vào mục Tên để di chuyển trường đó đến danh sách Trường được Chọn. Bấm đúp vào Họ để di chuyển trường đó đến danh sách Trường được Chọn. Bấm vào mục Tiếp theo.

  8. Vì bạn đang tạo danh sách tất cả các đơn hàng nên bạn sẽ muốn sử dụng truy vấn chi tiết. Nếu bạn đang tính tổng phí vận chuyển theo nhân viên hoặc thực hiện một số hàm tổng hợp khác, bạn có thể sử dụng truy vấn tóm tắt. Bấm vào mục Chi tiết (hiển thị mọi trường của mọi bản ghi), rồi bấm vào mục Tiếp theo.

  9. Bấm vào Hoàn tất để xem kết quả.

Truy vấn sẽ trả về danh sách các đơn hàng, mỗi đơn hàng sẽ chứa phí vận chuyển và họ tên của nhân viên đã xử lý đơn hàng đó.

Đầu Trang

Kết nối dữ liệu trong hai bảng bằng cách sử dụng mối quan hệ của hai bảng đó với bảng thứ ba

Thông thường, dữ liệu trong hai bảng có liên quan đến nhau thông qua bảng thứ ba. Trường hợp này thường là vì dữ liệu giữa hai bảng đầu tiên liên quan đến nhau trong một mối quan hệ nhiều đối nhiều. Thông thường, đó là phương pháp thiết kế cơ sở dữ liệu phù hợp để phân tách các mối quan hệ nhiều-nhiều giữa hai bảng thành hai mối quan hệ một-nhiều chứa ba bảng. Bạn thực hiện điều này bằng cách tạo một bảng thứ ba, được gọi là bảng nối hoặc bảng mối quan hệ, có khóa chính và khóa ngoại cho từng bảng còn lại. Sau đó, mối quan hệ một-nhiều được tạo ra giữa mỗi khóa ngoại trong bảng nối và khóa chính tương ứng của một trong các bảng còn lại. Trong các trường hợp đó, bạn cần đưa cả ba bảng vào truy vấn, ngay cả khi bạn chỉ muốn truy xuất dữ liệu từ hai trong số ba bảng đó.

Tạo truy vấn chọn bằng các bảng trong mối quan hệ nhiều-nhiều

  1. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn. Lưu ý nếu bạn đang sử dụng Access 2007, trên tab Tạo, trong nhóm Khác, bấm Thiết kế Truy vấn.

    Hộp thoại Hiển thị Bảng sẽ mở ra.

  2. Trong hộp thoại Hiển thị Bảng, bấm đúp vào hai bảng có chứa dữ liệu bạn muốn đưa vào truy vấn, cũng như bảng nối liên kết các bảng đó, rồi bấm Đóng.

    Cả ba bảng sẽ xuất hiện trong không gian làm việc thiết kế truy vấn, được liên kết trên các trường thích hợp.

  3. Bấm đúp vào từng trường bạn muốn sử dụng trong kết quả truy vấn của mình. Sau đó, từng trường sẽ xuất hiện trong truy vấn lưới thiết kế.

  4. Trong lưới thiết kế truy vấn, sử dụng hàng Tiêu chí để nhập tiêu chí trường. Để sử dụng tiêu chí trường mà không cần hiển thị trường trong kết quả truy vấn, hãy xóa hộp kiểm trong hàng Hiển thị của trường đó.

  5. Để sắp xếp kết quả dựa trên các giá trị trong một trường, trong lưới thiết kế truy vấn, bấm vào mục Tăng dần hoặc Giảm dần (tùy theo cách bạn muốn sắp xếp các bản ghi) trong hàng Sắp xếp của trường đó.

  6. Trên tab Thiết kế, trong nhóm Kết quả, bấm Chạy.

    Access sẽ hiển thị đầu ra truy vấn trong Dạng xem biểu dữ liệu.

Ví dụ sử dụng cơ sở dữ liệu mẫu Northwind

Lưu ý: Ví dụ này liên quan đến việc sửa đổi cơ sở dữ liệu mẫu Northwind. Bạn có thể muốn tạo một bản sao dự phòng cơ sở dữ liệu mẫu Northwind, rồi làm theo ví dụ này bằng cách sử dụng bản sao dự phòng đó.

Giả sử bạn có một cơ hội mới: một nhà cung cấp tại Rio de Janeiro đã tìm thấy Web site của bạn và có thể muốn hợp tác với bạn. Tuy nhiên, họ chỉ hoạt động tại Rio và gần São Paulo. Họ cung cấp tất cả các loại sản phẩm thực phẩm mà bạn môi giới. Họ là một doanh nghiệp khá lớn và muốn bạn đảm bảo rằng bạn có thể cấp cho họ quyền truy nhập vào đủ doanh số tiềm năng để thấy được điều đó là đáng giá: tối thiểu R$ 20.000,00 mỗi năm về doanh số (khoảng $9,300.00). Bạn có thể cung cấp cho họ thị trường mà họ yêu cầu không?

Dữ liệu bạn cần để trả lời câu hỏi này được tìm thấy trong hai vị trí: bảng Khách hàng và bảng Chi tiết Đơn hàng. Các bảng này được liên kết với nhau qua bảng Đơn hàng. Mối quan hệ giữa các bảng đã được xác định. Trong bảng Đơn hàng, mỗi đơn hàng chỉ có thể có một khách hàng, liên quan đến bảng Khách hàng trên trường ID_Khách_hàng. Mỗi bản ghi trong bảng Chi tiết Đơn hàng chỉ liên quan đến một đơn hàng trong bảng Đơn hàng, trên trường ID_Đơn_hàng. Do đó, một khách hàng nhất định có thể có nhiều đơn hàng, mỗi đơn hàng lại có nhiều chi tiết đơn hàng.

Trong ví dụ này, bạn sẽ tạo một truy vấn chéo bảng hiển thị tổng doanh thu mỗi năm tại các thành phố Rio de Janeiro và São Paulo.

Tạo truy vấn trong cửa sổ Thiết kế.

  1. Mở cơ sở dữ liệu Northwind Đóng biểu mẫu đăng nhập.

  2. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn. Lưu ý nếu bạn đang sử dụng Access 2007, trên tab Tạo, trong nhóm Khác, bấm Thiết kế Truy vấn.

    Hộp thoại Hiển thị Bảng sẽ mở ra.

  3. Trong hộp thoại Hiển thị Bảng, bấm đúp vào mục Khách hàng, Đơn hàng, rồi Chi tiết Đơn hàng, sau đó bấm Đóng.

    Cả ba bảng sẽ xuất hiện trong không gian làm việc thiết kế truy vấn.

  4. Trong bảng Khách hàng, bấm đúp vào trường Thành phố để thêm trường này vào lưới thiết kế truy vấn.

  5. Trong lưới thiết kế truy vấn, ở cột Thành phố, trong hàng Tiêu chí, nhập Tại ("Rio de Janeiro", "São Paulo"). Điều này chỉ làm cho những bản ghi có khách hàng ở một trong hai thành phố được đưa vào truy vấn.

  6. Trong bảng Chi tiết Đơn hàng, bấm đúp vào các trường Ngày_Vận_chuyển và Đơn_giá.

    Các trường được thêm vào lưới thiết kế truy vấn.

  7. Trong cột Ngày_Vận_chuyển ở lưới thiết kế truy vấn, chọn hàng Trường. Thay thế [Ngày_Vận_chuyển] bằng Năm: Format([Ngày_Vận_chuyển],"yyyy"). Điều này sẽ tạo nên một biệt danh trường, Năm, cho phép bạn chỉ sử dụng phần năm của giá trị trong trường Ngày_Vận_chuyển.

  8. Trong cột Đơn_Giá ở lưới thiết kế truy vấn, chọn hàng Trường. Thay thế [Đơn_Giá] bằng Doanh số: [Chi tiết Đơn hàng].[ Đơn_Giá]*[Số_lượng]-[Chi tiết Đơn hàng].[Đơn_giá]*[Số_lượng]*[Chiết khấu]. Điều này sẽ tạo nên một biệt danh trường, Doanh số, giúp tính toán doanh số của từng bản ghi.

  9. Trên tab Thiết kế, trong nhóm Loại Truy vấn, bấm Chéo bảng.

    Hai hàng mới, TổngChéo bảng, xuất hiện trong lưới thiết kế truy vấn.

  10. Trong cột Thành phố ở lưới thiết kế truy vấn, bấm vào hàng Chéo bảng, rồi bấm Tiêu đề Hàng.

    Điều này làm giá trị thành phố xuất hiện dưới dạng đầu đề hàng (tức là truy vấn trả về một hàng cho mỗi thành phố).

  11. Trong cột Năm, bấm vào hàng Chéo bảng, rồi bấm vào mục Đầu đề Cột.

    Điều này giúp giá trị năm xuất hiện dưới dạng đầu đề cột (tức là truy vấn trả về một cột cho mỗi năm).

  12. Trong cột Doanh số, bấm vào hàng Chéo bảng, rồi bấm vào mục Giá trị.

    Điều này giúp giá trị doanh số xuất hiện ở điểm giao nhau giữa hàng và cột (tức là truy vấn trả về một giá trị doanh số cho từng tổ hợp thành phố và năm).

  13. Trong cột Doanh số, bấm vào hàng Tổng, rồi bấm vào mục Tổng.

    Điều này giúp truy vấn tính tổng các giá trị trong cột này.

    Bạn có thể bỏ qua hàng Tổng ở hai cột khác tại giá trị mặc định của Nhóm Theo vì bạn muốn xem từng giá trị của các cột, không phải giá trị tổng hợp.

  14. Trên tab Thiết kế, trong nhóm Kết quả, bấm Chạy.

Bây giờ bạn đã có truy vấn trả về tổng doanh thu theo năm tại Rio de Janeiro và São Paulo.

Đầu Trang

Xem tất cả các bản ghi từ hai bảng tương tự

Đôi khi, bạn sẽ muốn kết hợp dữ liệu từ hai bảng giống nhau trong cấu trúc nhưng một trong hai bảng đó sẽ nằm trong cơ sở dữ liệu khác. Cân nhắc kịch bản sau.

Giả sử bạn là một phân tích viên làm việc với dữ liệu của học viên. Bạn đang thực hiện sáng kiến chia sẻ dữ liệu giữa trường của bạn và một trường khác để cả hai trường có thể cải thiện chương trình giảng dạy của mình. Để tìm hiểu một số thắc mắc bạn muốn khám phá, tốt hơn là nên tìm kiếm toàn bộ bản ghi của cả hai trường với nhau chứ không phải bản ghi của từng trường riêng biệt.

Bạn có thể nhập dữ liệu của trường khác vào bảng mới trong cơ sở dữ liệu của mình, tuy nhiên, sau đó mọi thay đổi đối với dữ liệu của trường khác sẽ không được phản ánh trong cơ sở dữ liệu của bạn. Giải pháp tốt hơn là liên kết với bảng của trường khác, rồi tạo truy vấn kết hợp dữ liệu khi bạn chạy các truy vấn đó. Bạn có thể phân tích dữ liệu dưới dạng một bộ đơn chứ không phải thực hiện hai phân tích và tìm cách diễn giải hai phân tích đó như thể hai phân tích đó là một.

Để xem toàn bộ bản ghi từ hai bảng có cấu trúc giống nhau, bạn sử dụng một truy vấn hợp.

Các truy vấn hợp không thể được hiển thị trong cửa sổ Thiết kế. Bạn xây dựng các truy vấn này bằng lệnh SQL bạn nhập trong tab đối tượng Dạng xem SQL.

Tạo truy vấn hợp bằng hai bảng

  1. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn. Lưu ý nếu bạn đang sử dụng Access 2007, trên tab Tạo, trong nhóm Khác, bấm Thiết kế Truy vấn.

    Lưới thiết kế truy vấn mới sẽ mở ra, đồng thời hộp thoại Hiển thị Bảng xuất hiện.

  2. Trong hộp thoại Hiển thị Bảng, bấm Đóng.

  3. Trên tab Thiết kế, trong nhóm Kiểu Truy vấn, bấm Kết hợp.

    Truy vấn sẽ chuyển từ dạng xem Thiết kế sang dạng xem SQL. Tại thời điểm này, tab đối tượng dạng xem SQL đang trống.

  4. Trong dạng xem SQL, nhập SELECT, theo sau là danh sách các trường từ bảng đầu tiên trong các bảng bạn muốn vào truy vấn. Tên trường cần phải đặt trong dấu ngoặc vuông và được phân tách bởi dấu phẩy. Khi bạn đã hoàn tất việc nhập tên trường, nhấn ENTER. Con trỏ sẽ di chuyển xuống một dòng trong dạng xem SQL.

  5. Nhập FROM, theo sau là tên bảng đầu tiên trong các bảng mà bạn muốn đưa vào truy vấn. Nhấn ENTER.

  6. Nếu bạn muốn chỉ định tiêu chí cho một trường từ bảng đầu tiên, nhập WHERE, theo sau là tên trường, toán tử so sánh (thông thường có dấu bằng (=)) và tiêu chí. Bạn có thể thêm các tiêu chí bổ sung vào cuối mệnh đề WHERE bằng cách sử dụng từ khóa AND và cú pháp tương tự được sử dụng cho tiêu chí đầu tiên; Ví dụ:WHERE [Mức_độ_Lớp]="100" AND [Giờ_Tín_chỉ]>2. Khi bạn đã hoàn tất việc chỉ định tiêu chí, nhấn ENTER.

  7. Nhập UNION, rồi nhấn ENTER.

  8. Nhập SELECT, theo sau là danh sách các trường từ bảng thứ hai bạn muốn đưa vào truy vấn. Bạn nên đưa vào các trường tương tự từ bảng bạn đã tích hợp ở bảng đầu tiên và trong cùng thứ tự. Tên trường cần phải đặt trong dấu ngoặc vuông và được phân tách bởi dấu phẩy. Khi bạn đã hoàn tất việc nhập tên trường, nhấn ENTER.

  9. Nhập FROM, theo sau là tên bảng thứ hai bạn muốn đưa vào truy vấn. Nhấn ENTER.

  10. Nếu bạn muốn, hãy thêm mệnh đề WHERE, theo mô tả trong bước 6 của quy trình này.

  11. Nhập dấu chấm phẩy (;) để cho biết kết thúc truy vấn.

  12. Trên tab Thiết kế, trong nhóm Kết quả, bấm Chạy.

    Kết quả của bạn xuất hiện trong dạng xem Biểu dữ liệu.

Đầu Trang

Xem Thêm

Tham gia bảng và truy vấn

Phát triển kỹ năng Office của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Người dùng nội bộ Office

Thông tin này có hữu ích không?

Cảm ơn phản hồi của bạn!

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×