Dùng một truy vấn hợp để kết hợp nhiều truy vấn vào một kết quả đơn

Dùng một truy vấn hợp để kết hợp nhiều truy vấn vào một kết quả đơn

Quan trọng:  Bài viết này là dịch máy, hãy xem tuyên bố miễn trừ trách nhiệm. Bạn hãy tìm phiên bản tiếng Anh của bài viết này tại đây để tham khảo.

Giả sử cơ sở dữ liệu Access của bạn có hai bảng không liên quan đến nhau – một bảng lưu trữ dữ liệu khách hàng và bảng kia lưu trữ dữ liệu về nhà cung cấp – và cả hai bảng đều có trường thông tin liên hệ. Bạn muốn xem thông tin liên hệ từ cả hai bảng trong một dạng xem. Để thực hiện điều này, trước hết, hãy tạo một truy vấn chọn cho từng bảng để truy xuất thông tin liên hệ, rồi kết hợp các kết quả đó bằng cách tạo một truy vấn hợp.

Lưu ý:  Nội dung trong bài viết này được dùng với các cơ sở dữ liệu máy tính Access. Bạn không thể tạo hoặc sử dụng truy vấn hợp trong cơ sở dữ liệu web Access hoặc ứng dụng web Access.

Bạn cần ôn lại cách tạo truy vấn chọn cơ bản? Hãy xem mục Tạo truy vấn chọn đơn giản.

Trước tiên, có một vài điểm cần phải biết về việc tạo truy vấn hợp:

  • Truy vấn chọn mà bạn kết hợp trong truy vấn hợp cần có cùng một số trường đầu ra, theo cùng một thứ tự và có kiểu dữ liệu phải giống nhau hoặc tương thích. Khi bạn chạy một truy vấn hợp, dữ liệu từ mỗi tập hợp của trường tương ứng được kết hợp thành một trường đầu ra để đầu ra truy vấn có cùng một số trường như mỗi một câu lệnh SELECT.

  • Truy vấn hợp là truy vấn SQL và do đó, phải được ghi trực tiếp trong SQL. Bạn chuyển sang Dạng xem SQL để ghi truy vấn SQL, bao gồm cả truy vấn hợp.

Bước 1: Tạo truy vấn chọn

Lưu ý: Mặc dù bạn có thể đưa vào nhiều bảng hoặc truy vấn trong một truy vấn, thủ tục này giả định rằng mỗi truy vấn chọn của bạn bao gồm dữ liệu từ một bảng duy nhất.

  1. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.

  2. Trong hộp thoại Hiện Bảng, bấm đúp vào bảng có trường mà bạn muốn bao gồm. Thêm bảng vào cửa sổ thiết kế truy vấn.

  3. Đóng hộp thoại Hiện Bảng.

  4. Trong cửa sổ thiết kế truy vấn, hãy bấm đúp vào mỗi trường mà bạn muốn bao gồm.
    Khi bạn chọn trường, hãy đảm bảo rằng bạn thêm cùng số trường, trong cùng một thứ tự mà bạn thêm vào truy vấn chọn khác. Hết sức chú ý đến kiểu dữ liệu của trường và đảm bảo rằng chúng có kiểu dữ liệu tương thích với trường trong cùng một vị trí, trong truy vấn khác mà bạn đang kết hợp. Ví dụ: Nếu truy vấn chọn đầu tiên của bạn có năm trường, trường đầu tiên chứa dữ liệu ngày/thời gian, hãy đảm bảo rằng mỗi truy vấn chọn khác mà bạn đang kết hợp cũng có năm trường, trường đầu tiên chứa dữ liệu ngày/thời gian v.v.

  5. Bạn có thể tùy ý thêm tiêu chí vào trường của mình bằng cách nhập biểu thức phù hợp vào hàng Tiêu chí của lưới trường.

  6. Sau khi đã hoàn tất việc thêm trường và tiêu chí trường, bạn nên chạy truy vấn chọn và xem lại đầu ra của truy vấn đó. Trên tab Thiết kế, trong nhóm Kết quả, bấm vào Chạy.

  7. Chuyển truy vấn sang dạng xem Thiết kế.

  8. Lưu truy vấn chọn và để truy vấn mở.

  9. Lặp lại thủ tục này cho mỗi truy vấn chọn mà bạn muốn kết hợp.

Để biết thêm thông tin về cách sử dụng tiêu chí trong truy vấn, hãy xem mục Áp dụng tiêu chí cho một truy vấn.

Bước 2: Kết hợp các truy vấn chọn

Trong bước này, bạn tạo truy vấn hợp bằng câu lệnh SQL. (Để biết thêm thông tin, hãy xem mục Cú pháp SQL dưới đây.)

  1. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.

  2. Đóng hộp thoại Hiện Bảng.

  3. Trên tab Thiết kế, trong nhóm Truy vấn, bấm Hợp.

Access ẩn cửa sổ thiết kế truy vấn và hiển thị tab đối tượng dạng xem SQL. Tại thời điểm này, tab đối tượng của dạng xem SQL đang trống.

  1. Hãy bấm vào tab cho truy vấn chọn đầu tiên mà bạn muốn kết hợp trong truy vấn hợp.

  2. Trên tab Trang đầu, bấm vào Dạng xem > Dạng xem SQL.

  3. Sao chép câu lệnh SQL cho truy vấn chọn. Bấm vào tab cho truy vấn hợp mà bạn đã bắt đầu để tạo trong bước 1.

  4. Dán câu lệnh SQL cho truy vấn chọn vào tab đối tượng của dạng xem SQL của truy vấn hợp.

  5. Xóa bỏ dấu chấm phẩy (;) ở cuối câu lệnh SQL của truy vấn chọn.

  6. Nhấn phím Enter để di chuyển con trỏ xuống một dòng, rồi nhập UNION vào dòng mới.

  7. Hãy bấm vào tab cho truy vấn chọn tiếp theo mà bạn muốn kết hợp trong truy vấn hợp.

  8. Lặp lại từ bước 5 tới bước 10 cho tới khi bạn đã sao chép và dán tất cả câu lệnh SQL cho truy vấn chọn vào trong cửa sổ dạng xem SQL của truy vấn hợp. Không xóa bỏ dấu chấm phẩy hoặc nhập bất cứ ký tự gì sau câu lệnh SQL cho truy vấn chọn cuối cùng.

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

Kết quả của truy vấn hợp sẽ xuất hiện trong Dạng xem biểu dữ liệu.

Đầu Trang

Mẹo dùng truy vấn hợp

  • Để có thể phân biệt hàng nào đến từ bảng nào, hãy thêm một chuỗi văn bản làm trường trong mỗi câu lệnh chọn của bạn.

    Ví dụ, nếu một câu lệnh chọn đang truy xuất trường từ một bảng có tên là Products và câu lệnh chọn khác đang truy xuất trường từ một bảng có tên là Services, hãy thêm chuỗi "Product" làm trường ở cuối câu lệnh đầu tiên và "Service" ở cuối câu lệnh thứ hai. Bạn cũng có thể gán một biệt danh trường (ví dụ: "type") cho chuỗi bằng cách dùng từ khóa AS (LÀM) như được hiện trong ví dụ sau đây:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Đầu ra của truy vấn sẽ bao gồm một trường có tên là "type" hiển thị cho dù hàng bắt nguồn từ bảng Products hay từ bảng Services.

  • Mỗi từ khóa UNION kết hợp câu lệnh SELECT ngay phía trước và sau nó. Nếu bạn dùng từ khóa ALL với vài từ khóa UNION trong truy vấn của bạn, nhưng không dùng với các từ khóa khác, kết quả sẽ bao gồm hàng trùng nhau từ các cặp câu lệnh SELECT được kết hợp bằng cách dùng UNION ALL nhưng sẽ không bao gồm hàng trùng nhau từ câu lệnh SELECT được kết hợp bằng cách dùng từ khóa UNION mà không dùng từ khóa ALL.

  • Số, kiểu dữ liệu và thứ tự của các trường trong truy vấn chọn phải tương ứng. Bạn có thể dùng biểu thức như các phép tính hoặc các truy vấn con để làm cho chúng phù hợp với nhau.

    Ví dụ: Bạn có thể khớp một trường năm có hai ký tự với một trường năm có bốn ký tự bằng cách dùng hàm Right để trích xuất hai chữ số cuối cùng của năm có bốn ký tự.

Dùng kết quả của truy vấn hợp để tạo một bảng mới

Trước tiên, hãy sử dụng truy vấn hợp làm đầu vào cho truy vấn chọn mới, rồi sử dụng truy vấn chọn đó làm cơ sở cho truy vấn tạo bảng, như được trình bày trong các bước sau:

  1. Tạo và lưu truy vấn hợp.

  2. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.

  3. Trong hộp thoại Hiện Bảng, hãy bấm tab Truy vấn.

  4. Bấm đúp vào truy vấn hợp rồi sau đó đóng hộp thoại Hiện Bảng.

    Lưu ý: Nếu bạn thấy cảnh báo Bảo mật trong Thanh Thông báo, truy vấn hành động có thể bị tắt. Để bật truy vấn hành động, hãy bấm Cho phép Nội dung trên Thanh Thông báo.

  5. Trong lưới thiết kế truy vấn, trên tab đối tượng của truy vấn hợp, hãy bấm đúp vào dấu hoa thị (*) để dùng tất cả các trường của truy vấn hợp để tạo bảng mới.

  6. Trên tab Thiết kế, trong nhóm Kiểu Truy vấn, hãy bấm Tạo Bảng.

  7. Trong hộp thoại Tạo Bảng, hãy nhập tên cho bảng mới.

  8. Bạn có thể tùy ý xác định một cơ sở dữ liệu khác để tạo bảng trong đó.

  9. Bấm OK.

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

Dùng truy vấn hợp để thực hiện một nối ngoài đầy đủ

Bạn có thể dùng một truy vấn hợp để thực hiện một nối ngoài. Nối ngoài đầy đủ không hạn chế hàng được trả về từ bảng đã nối nhưng có kết hợp hàng trên cơ sở giá trị trong trường nối.

  1. Tạo một truy vấn có một nối ngoài trái trên trường mà bạn muốn dùng cho một nối ngoài đầy đủ.

  2. Trên tab Trang đầu, trong nhóm Dạng xem, hãy bấm Dạng xem rồi bấm Dạng xem SQL.

  3. Nhấn phím Ctrl+C để sao chép mã SQL.

  4. Xóa bỏ dấu chấm phẩy ở cuối mệnh đề FROM rồi sau đó nhấn phím Enter.

  5. Nhập UNION, rồi nhấn Enter.

    Lưu ý: Không dùng từ khóa ALL khi bạn dùng truy vấn hợp để thực hiện một nối ngoài đầy đủ.

  6. Nhấn phím Ctrl+V để dán mã SQL mà bạn đã sao chép trong bước 3.

  7. Trong mã mà bạn đã dán, hãy thay đổi LEFT JOIN thành RIGHT JOIN.

  8. Xóa bỏ dấu chấm phẩy ở cuối mệnh đề FROM thứ hai rồi sau đó nhấn phím Enter.

  9. Thêm mệnh đề WHERE xác định rằng giá trị của trường nối là giá trị NULL trong bảng đầu tiên được liệt kê trong mệnh đề FROM (bảng bên trái).

    Ví dụ: nếu mệnh đề FROM là:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Bạn có thể thêm mệnh đề WHERE sau đây:

    WHERE Products.ID IS NULL

  10. Nhập một dấu chấm phẩy (;) ở cuối của mệnh đề WHERE để chỉ ra điểm kết thúc của truy vấn hợp.

  11. Trên tab Thiết kế, trong nhóm Kết quả, hãy bấm Chạy.
    Kết quả của truy vấn hợp sẽ xuất hiện trong Dạng xem biểu dữ liệu.

Để biết thêm thông tin, hãy xem kết nối với bảng và truy vấn.

Đầu Trang

Yêu cầu và cú pháp SQL cho một truy vấn hợp

Vài yêu cầu cho truy vấn hợp

  • Truy vấn chọn mà bạn kết hợp trong truy vấn hợp cần có cùng một số trường đầu ra, theo cùng thứ tự và có kiểu dữ liệu phải giống nhau hoặc tương thích. Khi bạn chạy một truy vấn hợp, dữ liệu từ mỗi tập hợp của trường tương ứng được kết hợp thành một trường đầu ra để đầu ra truy vấn có cùng một số trường như mỗi một câu lệnh SELECT.

    Lưu ý: Để thực hiện truy vấn hợp, kiểu dữ liệu Số và Văn bản là tương thích.

  • Truy vấn hợp là SQL cụ thể và do đó, phải được ghi trực tiếp trong SQL. Bạn chuyển sang Dạng xem SQL để ghi truy vấn SQL, bao gồm cả truy vấn hợp.

Cú pháp SQL của một truy vấn hợp

Trong một truy vấn hợp, mỗi truy vấn chọn (cũng được gọi là câu lệnh SELECT) có những mệnh đề sau:

Mệnh đề

Có chứa danh sách…

SELECT

các trường có chứa dữ liệu mà bạn muốn truy xuất.

FROM

các bảng có chứa các trường đó.

Tùy chọn WHERE

tiêu chí cho những trường này.

Câu lệnh SELECT được kết hợp bằng cách dùng từ khóa UNION.

Cú pháp SQL cơ bản cho một truy vấn hợp như sau:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Ví dụ: Nếu cơ sở dữ liệu của bạn có một bảng có tên là Products và một bảng khác có tên là Services và cả hai bảng đều có các trường chứa tên của sản phẩm hoặc dịch vụ, giá cả, bảo hành hoặc sự sẵn sàng bảo đảm và cho dù bạn chào bán sản phẩm hoặc dịch vụ dành riêng nào. Mặc dù bảng Products lưu trữ thông tin bảo hành và bảng Services lưu trữ thông tin bảo đảm nhưng thông tin cơ bản cũng giống như vậy (cho dù một sản phẩm hoặc dịch vụ đặc biệt kèm theo một cam kết về chất lượng). Bạn có thể dùng một truy vấn hợp như ví dụ sau đây để kết hợp bốn trường từ hai bảng:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Hãy cùng kiểm tra ví dụ về cú pháp trên đây, theo từng dòng một:

Cú pháp

Giải thích

Thông tin bổ sung

SELECT name, price, warranty_available, exclusive_offer

Mệnh đề SELECT đầu tiên

SELECT được tiếp theo sau bằng một danh sách các mã định danh chỉ ra các trường mà bạn muốn truy xuất dữ liệu từ đó.

Mệnh đề SELECT phải liệt kê ít nhất một trường.

Mệnh đề SELECT này liệt kê mã định danh trường name, price, warranty_availableexclusive_offer.

FROM Products

Mệnh đề FROM đầu tiên

Mệnh đề FROM tiếp sau một mệnh đề SELECT và chúng cùng nhau hình thành nên một câu lệnh SELECT cơ bản.

FROM được tiếp theo sau bằng một danh sách các mã định danh chỉ ra bảng nào chứa trường được liệt kê trong mệnh đề SELECT.

Mệnh đề FROM phải liệt kê ít nhất một bảng.

Mệnh đề FROM này liệt kê Products của mã định danh bảng.

UNION ALL

Từ khóa UNION và từ khóa ALL tùy chọn

Kết quả của câu lệnh SELECT đặt trước UNION sẽ được kết hợp cùng với kết quả của câu lệnh SELECT đứng sau UNION.

Khi bạn dùng từ khóa ALL, hàng trùng nhau sẽ không bị loại bỏ khỏi kết quả truy vấn hợp.

Bằng cách dùng từ khóa ALL, truy vấn có thể chạy nhanh hơn vì Access không phải kiểm tra các hàng trùng nhau.

Dùng từ khóa ALL nếu bất cứ điều kiện nào sau đây là đúng:

  • Bạn chắc chắn rằng truy vấn chọn sẽ không tạo ra bất cứ hàng trùng nhau nào.

  • Kết quả có hàng trùng lặp hay không cũng không quan trọng.

  • Bạn muốn thấy các hàng trùng nhau.

SELECT name, price, guarantee_available, exclusive_offer

Mệnh đề SELECT thứ hai

Một số quy tắc:

  • Mệnh đề SELECT thứ hai cần có cùng số trường như trong mệnh đề SELECT thứ nhất.

  • Trường chia sẻ dữ liệu chung cần phải xuất hiện theo cùng một thứ tự trong mệnh đề.

  • Trường chia sẻ dữ liệu chung cần có kiểu dữ liệu giống nhau hoặc tương thích.

Lưu ý: Tên của trường trong đầu ra của truy vấn hợp là từ mệnh đề SELECT đầu tiên. Do đó, trong ví dụ của chúng ta, dữ liệu từ trường "warranty_available" và từ trường "guarantee_available" được đặt tên là "warranty_available" trong kết quả truy vấn.

FROM Services

Mệnh đề FROM thứ hai

Không có hạn chế trên các bảng trong mệnh đề FROM của một truy vấn hợp. Bạn có thể tạo một truy vấn hợp dùng bảng giống nhau trong mỗi mệnh đề FROM. Bạn có thể có các số bảng khác nhau trong mệnh đề FROM. Trong ví dụ của chúng ta, mỗi mệnh đề FROM có một bảng duy nhất.

Đầu Trang

Lưu ý: Tuyên bố miễn trừ trách nhiệm Dịch Máy: Bài viết này do một hệ thống máy tính dịch mà không có sự can thiệp của con người. Microsoft cung cấp những bản dịch máy này để giúp người dùng không nói tiếng Anh hiểu nội dung về các sản phẩm, dịch vụ và công nghệ của Microsoft. Do bài viết này được dịch máy nên có thể có các lỗi về từ vựng, cú pháp hoặc ngữ pháp.

Phát triển các kỹ năng 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.

×