Applies ToAccess cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Khi bạn bao gồm nhiều nguồn dữ liệu trong một truy vấn Access, bạn sử dụng kết hợp để giới hạn các bản ghi mà bạn muốn xem, dựa trên cách các nguồn dữ liệu liên quan đến nhau. Bạn cũng có thể sử dụng kết hợp các bản ghi để kết hợp các bản ghi từ cả hai nguồn dữ liệu, để mỗi cặp bản ghi từ nguồn đó trở thành một bản ghi trong kết quả truy vấn.

Bài viết này thảo luận về các loại kết nối khác nhau và hướng dẫn bạn cách sử dụng chúng trong một truy vấn. Theo mặc định, kết nối được tạo tự động nếu đã có mối quan hệ giữa hai nguồn dữ liệu mà bạn sử dụng trong một truy vấn. Một liên kết cũng được tạo ra nếu có các trường tương ứng rõ ràng với nhau. Bạn có thể xóa kết nối được tạo tự động. Bài viết này cung cấp thông tin cơ bản về mối quan hệ bảng, bao gồm cách tạo mối quan hệ bảng.

Lưu ý: Bạn có thể nối các truy vấn theo cách giống như nối các bảng và cũng có thể nối cả hai.

Trong bài viết này

Tổng quan

Cơ sở dữ liệu là tập hợp các bảng dữ liệu có mối quan hệ lô-gic với nhau. Bạn sử dụng mối quan hệ để kết nối bảng theo các trường chung của chúng. Một bảng có thể là một phần của bất kỳ số lượng mối quan hệ nào, nhưng mỗi mối quan hệ luôn có chính xác hai bảng. Trong truy vấn, mối quan hệ được thể hiện bằng kết nối.

Khi bạn thêm bảng vào truy vấn, Access sẽ tạo kết nối dựa trên mối quan hệ đã được xác định giữa các bảng. Bạn có thể tạo thủ công các kết nối trong truy vấn, ngay cả khi chúng không thể hiện các mối quan hệ đã được xác định. Nếu bạn sử dụng các truy vấn khác (thay vì hoặc ngoài bảng) làm nguồn dữ liệu cho truy vấn, bạn có thể tạo kết nối giữa các truy vấn nguồn cũng như giữa các truy vấn đó và bất kỳ bảng nào mà bạn sử dụng làm nguồn dữ liệu.

Các kết nối hoạt động tương tự như tiêu chí truy vấn trong đó chúng thiết lập các quy tắc mà dữ liệu phải khớp để được đưa vào các thao tác truy vấn. Không giống như criteria, joins cũng chỉ định rằng mỗi cặp hàng thỏa mãn các điều kiện nối sẽ được kết hợp trong tập bản ghi để tạo thành một hàng duy nhất.

Có bốn loại nối cơ bản: nối trong, nối ngoài, nối chéo và nối không bằng nhau. Bài viết này khám phá từng loại liên kết mà bạn có thể sử dụng, lý do tại sao bạn sử dụng từng loại và cách tạo kết nối.

Nối là để truy vấn mối quan hệ giữa các bảng: chỉ báo về cách kết hợp dữ liệu trong hai nguồn dựa trên các giá trị dữ liệu chung của chúng. Đây là minh họa về phép nối trong Dạng xem Thiết kế truy vấn, với các thuộc tính nối mở trong hộp thoại:

Hộp Thuộc tính Phép nối.

Đường này giữa các bảng thể hiện kết nối. Bấm đúp vào một liên kết để mở hộp thoại Thuộc tính Kết hợp (được mô tả) và xem lại hoặc thay đổi kết nối.

Các liên kết đôi khi có định hướng. Khu vực này của hộp thoại cho bạn biết bảng nào nằm trong phép nối và trường nào được dùng để nối các bảng.

Khu vực này xác định loại nối: tùy chọn 1 là nối trong, 2 là nối ngoài bên trái và 3 là nối ngoài bên phải.

Bạn có thể sử dụng các trường từ cả hai bảng và dữ liệu liên quan đến một tác vụ đã cho sẽ được hiển thị từ mỗi bảng. Trong một nối trong, không có dữ liệu nào khác được bao gồm. Trong nối ngoài, các bản ghi không liên quan từ một bảng cũng được đưa vào kết quả truy vấn.

Đầu Trang

Các loại nối

Có bốn loại nối cơ bản: nối trong, nối ngoài, nối chéo và nối không bằng nhau. Nối chéo và liên kết không đều là các loại nối nâng cao và hiếm khi được sử dụng, nhưng bạn nên biết về chúng để hiểu biết đầy đủ về cách hoạt động của phép nối.

Nối trong: chỉ kết hợp dữ liệu liên quan từ cả hai bảng

Nối trong là một phép nối trong đó Access chỉ bao gồm dữ liệu từ bảng nếu có dữ liệu tương ứng trong bảng có liên quan và ngược lại. Thông thường, bạn sẽ sử dụng nối trong. Khi bạn tạo một phép nối và không xác định liên kết đó là gì, Access giả định rằng bạn muốn có một phép nối bên trong. Nối trong rất hữu ích vì chúng cho phép bạn kết hợp dữ liệu từ hai nguồn dựa trên các giá trị dùng chung – vì vậy bạn chỉ thấy dữ liệu khi có ảnh hoàn chỉnh.

Nối ngoài: tất cả các dữ liệu liên quan được kết hợp chính xác, cộng với tất cả các bản ghi còn lại từ một bảng

Nối ngoài giống như nối trong nhưng thêm các hàng còn lại từ một trong các bảng. Nối ngoài có định hướng: nối ngoài bên trái bao gồm tất cả các bản ghi từ bảng bên trái – bảng đầu tiên trong phép nối – và nối ngoài bên phải bao gồm tất cả các bản ghi từ bảng bên phải – bảng thứ hai trong phép nối.

Nối ngoài đầy đủ: tất cả dữ liệu, kết hợp nếu khả thi

Trong một số hệ thống, một nối ngoài có thể bao gồm tất cả các hàng từ cả hai bảng, với các hàng được kết hợp khi chúng tương ứng. Đây được gọi là nối ngoài đầy đủ và Access không hỗ trợ rõ ràng chúng. Tuy nhiên, bạn có thể sử dụng một liên kết chéo và các tiêu chí để đạt được hiệu ứng tương tự.

Nối chéo: tất cả dữ liệu, kết hợp theo mọi cách có thể

Trong hầu hết các trường hợp, liên kết chéo là tác dụng phụ của việc thêm hai bảng vào một truy vấn và sau đó quên nối các bảng đó. Access hiểu điều này có nghĩa là bạn muốn xem mọi bản ghi từ một bảng được kết hợp với mọi bản ghi từ bảng kia – mọi kết hợp bản ghi có thể có. Vì không có dữ liệu nào có thể được kết hợp, loại phép nối này hiếm khi tạo ra kết quả hữu ích. Tuy nhiên, có một vài trường hợp khi liên kết chéo chỉ là những gì bạn cần.

Nối không bằng nhau: giống như một liên kết thông thường nhưng sử dụng so sánh khác để kết hợp các hàng

Các kết nối không bằng nhau sử dụng toán tử khác ngoài dấu bằng (=) để so sánh các giá trị và xác định xem có kết hợp dữ liệu hay không và cách kết hợp dữ liệu. Các nối không bằng nhau không được hỗ trợ rõ ràng nhưng bạn có thể sử dụng phép nối chéo và tiêu chí để đạt được hiệu ứng này.

Hiển thị các hàng có tồn tại một giá trị chung trong cả hai bảng đã nối

Nếu bạn chỉ muốn hiển thị những hàng có giá trị khớp trong trường đã nối, bạn sử dụng kết nối trong. Access tự động tạo kết nối trong.

Nối trong là loại nối phổ biến nhất. Họ sẽ cho truy vấn biết rằng các hàng từ một trong các bảng đã nối tương ứng với các hàng trong bảng kia, trên cơ sở dữ liệu trong các trường liên kết. Khi chạy truy vấn có nối trong, chỉ những hàng tồn tại giá trị chung trong cả hai bảng đã nối sẽ được đưa vào các thao tác truy vấn.

Làm thế nào để sử dụng nối trong?

Trong hầu hết các trường hợp, bạn không cần phải làm gì để sử dụng nối trong. Nếu các bảng mà bạn thêm vào truy vấn đã có sẵn mối quan hệ, Access sẽ tự động tạo kết nối trong giữa từng cặp bảng liên quan, khi bạn thêm các bảng. Nếu tính toàn vẹn tham chiếu là bắt buộc, Access cũng sẽ hiển thị "1" phía trên đường nối để cho biết bảng nào đang ở phía "một" của quan hệ một - nhiều, đồng thời hiển thị biểu tượng vô cực () để cho biết bảng nào đang ở phía "nhiều".

Ngay cả khi bạn chưa tạo mối quan hệ, Access sẽ tự động tạo kết nối trong nếu bạn thêm hai bảng vào một truy vấn và các bảng đó có một trường có cùng kiểu dữ liệu hoặc tương thích và một trong các trường liên kết là trường khóa chính. Ký hiệu "một" và "nhiều" không được hiển thị trong trường hợp này, vì tính toàn vẹn tham chiếu không được thực thi.

Nếu bạn thêm truy vấn vào truy vấn của mình và chưa tạo mối quan hệ giữa các truy vấn đó, Access sẽ không tự động tạo kết nối trong giữa các truy vấn đó hoặc giữa các truy vấn và bảng. Nói chung, bạn nên tự tạo ra chúng. Bạn tạo kết nối trong bằng cách kéo một trường từ một nguồn dữ liệu vào một trường trên một nguồn dữ liệu khác. Access sẽ hiển thị một đường thẳng giữa hai trường để cho biết kết nối đã được tạo.

Cú pháp SQL cho nối trong

Nối trong được xác định trong SQL trong mệnh đề FROM, như minh họa dưới đây:

FROM table1 INNER JOIN table2 ON table1.field1 compare table2.field2

Thao tác INNER JOIN có các phần sau:

Phần

Mô tả

table1, table2

Tên của bảng mà bản ghi được kết hợp từ đó.

field1, field2

Tên của trường được nối. Nếu các trường đó không phải ở dạng số thì chúng phải có cùng kiểu dữ liệu và chứa cùng kiểu dữ liệu nhưng không cần phải có cùng tên.

so_sánh

Bất kỳ toán tử so sánh quan hệ nào: "=," "<," ">," "<=," ">=," hoặc "<>."

Để biết thêm thông tin về cú pháp nối trong, hãy xem chủ đề Thao tác INNER JOIN.

Đầu Trang

Hiển thị tất cả các hàng từ một bảng và các hàng tương ứng từ bảng khác

Nối ngoài cho truy vấn biết rằng mặc dù một số hàng ở cả hai bên của phép nối tương ứng chính xác nhưng truy vấn nên bao gồm tất cả các hàng từ một bảng và cả các hàng từ bảng còn lại có chung giá trị ở cả hai bên của phép nối.

Nối ngoài có thể là nối ngoài bên trái hoặc có thể là nối ngoài bên phải. Trong nối ngoài bên trái, truy vấn bao gồm tất cả các hàng từ bảng đầu tiên trong mệnh đề FROM của câu lệnh SQL và chỉ những hàng từ bảng còn lại có trường liên kết chứa các giá trị chung cho cả hai bảng. Trong kết nối ngoài bên phải, truy vấn bao gồm tất cả các hàng từ bảng thứ hai trong mệnh đề FROM của câu lệnh SQL và chỉ những hàng từ bảng còn lại có trường liên kết chứa các giá trị chung cho cả hai bảng.

Lưu ý: Bạn có thể dễ dàng biết bảng nào là bảng bên trái hoặc bảng bên phải trong một kết nối đã cho bằng cách bấm đúp vào kết nối, rồi tìm trong hộp thoại Thuộc tính Kết hợp. Bạn cũng có thể chuyển sang dạng xem SQL, rồi kiểm tra mệnh đề FROM.

Vì một số hàng ở một bên của phép nối ngoài sẽ không có hàng tương ứng từ bảng còn lại, một số trường được trả về trong kết quả truy vấn từ bảng khác đó sẽ trống khi các hàng không tương ứng.

Làm thế nào để tôi sử dụng nối ngoài?

Bạn tạo nối ngoài bằng cách sửa đổi nối trong hiện có. Nếu không tồn tại liên kết bên trong, bạn hãy tạo một nối bên trong, rồi thay đổi nối bên ngoài.

Thay đổi nối trong thành nối ngoài

  1. Trong dạng xem Thiết kế truy vấn, bấm đúp vào liên kết bạn muốn thay đổi.

    Hộp thoại Thuộc tính Nối sẽ xuất hiện.

  2. Trong hộp thoại Thuộc tính Nối , hãy lưu ý các lựa chọn được liệt kê bên cạnh tùy chọn 2 và tùy chọn 3.

  3. Bấm vào tùy chọn bạn muốn sử dụng, rồi bấm OK.

  4. Access hiển thị kết nối và hiển thị mũi tên trỏ từ nguồn dữ liệu, trong đó tất cả các hàng sẽ được đưa vào nguồn dữ liệu, trong đó chỉ những hàng đáp ứng điều kiện nối mới được bao gồm.

Nối ngoài không rõ

Nếu bạn tạo một truy vấn có chứa LEFT JOIN và INNER JOIN, có thể Access sẽ không xác định được phép toán nối nào cần thực hiện trước tiên. Vì kết quả sẽ khác nhau tùy thuộc vào việc kết nối bên trái hay nối trong được thực hiện trước tiên, Access sẽ hiển thị thông báo lỗi:

Để sửa lỗi này, bạn phải sửa đổi truy vấn để xóa liên kết nào cần thực hiện trước tiên.

Cú pháp SQL cho nối ngoài

Nối ngoài được xác định trong SQL trong mệnh đề FROM, như minh họa dưới đây:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 compare table2.field2

Các phép toán LEFT JOIN và RIGHT JOIN có những phần sau:

Phần

Mô tả

table1, table2

Tên của bảng mà bản ghi được kết hợp từ đó.

field1, field2

Tên của trường được nối. Các trường cần phải có cùng kiểu dữ liệu và chứa cùng kiểu dữ liệu nhưng không cần phải có cùng tên.

so_sánh

Bất kỳ toán tử so sánh quan hệ nào: "=," "<," ">," "<=," ">=," hoặc "<>."

Để biết thêm thông tin về cú pháp nối ngoài, hãy xem chủ đề Phép toán LEFT JOIN, RIGHT JOIN.

Đầu Trang

Hiển thị tất cả các hàng từ cả hai bảng và nối chúng ở nơi tồn tại một giá trị chung

Khi bạn muốn hiển thị tất cả các hàng từ hai bảng và nối chúng dựa trên các giá trị chung, bạn sử dụng kết nối bên ngoài đầy đủ. Access không hỗ trợ rõ ràng các nối ngoài đầy đủ nhưng bạn có thể đạt được hiệu ứng tương tự bằng cách sử dụng truy vấn hợp. Quy trình sau đây giải thích cách thực hiện điều này, nhưng nếu bạn muốn biết thêm thông tin về truy vấn hợp, hãy xem phần Xem Thêm.

Để sử dụng truy vấn hợp để thực hiện nối ngoài đầy đủ:

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

  2. Trên tab Trang chủ, trong nhóm Dạng xem, bấm Dạng xem và sau đó bấm Dạng xem SQL.

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

  4. Xóa dấu chấm phẩy ở cuối mệnh đề FROM, rồi nhấn ENTER.

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

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

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

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

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

  9. Thêm mệnh đề WHERE chỉ rõ rằng giá trị của trường liên kết là 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 sẽ thêm mệnh đề WHERE sau đây:

    WHERE Products.ID IS NULL

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

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

Nối chéo

Nối chéo khác với nối trong và ngoài ở chỗ chúng không được thể hiện rõ ràng trong Access. Trong một liên kết chéo, mỗi hàng từ một bảng được kết hợp với mỗi hàng từ một bảng khác, kết quả là một sản phẩm chéo hoặc một sản phẩm Cartesian. Bất cứ khi nào bạn chạy một truy vấn có các bảng không được nối một cách rõ ràng, một sản phẩm chéo sẽ là kết quả. Nối chéo thường không chủ ý, nhưng có những trường hợp chúng có thể hữu ích.

Tại sao tôi nên sử dụng phép nối chéo?

Nếu bạn muốn kiểm tra mọi tổ hợp hàng có thể có giữa hai bảng hoặc truy vấn, hãy sử dụng kết hợp chéo. Ví dụ: giả sử doanh nghiệp của bạn đã có một năm ngoạn mục và bạn đang cân nhắc chiết khấu cho khách hàng của mình. Bạn có thể xây dựng một truy vấn tính tổng các giao dịch mua hàng của từng khách hàng, tạo một bảng nhỏ có nhiều tỷ lệ phần trăm chiết khấu có thể có và kết hợp hai truy vấn này trong một truy vấn khác thực hiện phép nối chéo. Bạn kết thúc bằng một truy vấn hiển thị một tập hợp các khoản chiết khấu giả thuyết cho mỗi khách hàng.

Làm thế nào để tôi sử dụng phép nối chéo?

Liên kết chéo được tạo ra bất kỳ lúc nào bạn bao gồm các bảng hoặc truy vấn trong truy vấn của mình và không tạo ít nhất một liên kết rõ ràng cho mỗi bảng hoặc truy vấn. Access kết hợp mọi hàng từ mỗi bảng hoặc truy vấn không được liên kết rõ ràng với bất kỳ bảng hoặc truy vấn nào khác với mọi hàng khác trong kết quả. Hãy cân nhắc kịch bản chiết khấu từ đoạn trước đó. Giả sử bạn có 91 khách hàng và bạn muốn xem năm tỷ lệ phần trăm chiết khấu có thể có. Nối chéo của bạn tạo ra 455 hàng (sản phẩm của 91 và 5).

Như bạn có thể tưởng tượng, nối chéo ngoài ý muốn có thể tạo ra số hàng lớn trong kết quả truy vấn của bạn. Hơn nữa, các kết quả này nhìn chung là vô nghĩa, bởi vì nếu bạn không thực sự có ý định kết hợp mọi hàng với mọi hàng khác, hầu hết các hàng kết hợp xuất hiện trong kết quả sẽ không có ý nghĩa. Cuối cùng, các truy vấn sử dụng nối chéo ngoài ý muốn có thể mất rất nhiều thời gian để chạy.

Nối chéo ngoài ý muốn trong dạng xem Thiết kế truy vấn

1. Các trường được khoanh tròn nên được liên kết với nhau.

Sản phẩm chéo ngoài dự định

1. Lưu ý số lượng bản ghi rất lớn.

Kết quả truy vấn đã sửa

1. Lưu ý rằng số lượng bản ghi nhỏ hơn nhiều.

Đầu Trang

Nối các bảng dựa trên sự bất bình đẳng của các giá trị trường

Các liên kết không cần phải dựa trên sự tương đương của các trường liên kết. Liên kết có thể dựa trên bất kỳ toán tử so sánh nào, chẳng hạn như lớn hơn (>), nhỏ hơn (<), hoặc không bằng (<>). Các liên kết không dựa trên sự tương đương được gọi là các nối không bằng nhau.

Nếu bạn muốn kết hợp các hàng của hai nguồn dữ liệu dựa trên các giá trị trường không bằng nhau, bạn sử dụng một kết nối không bằng nhau. Thông thường, các liên kết không bằng nhau được dựa trên các toán tử so sánh lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=) hoặc nhỏ hơn hoặc bằng (<=). Các kết nối không bằng nhau dựa trên toán tử không bằng (<>) có thể trả về gần như nhiều hàng khi nối chéo và kết quả có thể khó diễn giải.

Làm thế nào để tôi sử dụng kết nối không bằng nhau?

Nối không bằng nhau không được hỗ trợ trong dạng xem Thiết kế. Nếu bạn muốn sử dụng chúng, bạn phải làm như vậy bằng cách sử dụng dạng xem SQL. Tuy nhiên, bạn có thể tạo phép nối trong cửa sổ Thiết kế, chuyển sang dạng xem SQL, tìm toán tử so sánh bằng (=) và thay đổi thành toán tử bạn muốn sử dụng. Sau khi thực hiện điều này, bạn chỉ có thể mở lại truy vấn ở dạng xem Thiết kế nếu trước tiên bạn thay đổi toán tử so sánh trở về bằng (=) trong dạng xem SQL.

Xóa kết nối

Nếu Access tự động tạo một liên kết mà bạn không muốn hoặc nếu bạn tạo một kết nối do nhầm lẫn — ví dụ: một liên kết giữa hai trường có kiểu dữ liệu không giống nhau — bạn có thể xóa bỏ phép nối đó.

  1. Trong lưới thiết kế truy vấn, bấm vào đường nối bạn muốn loại bỏ.

  2. Nhấn DELETE.

-hoặc-

  • Trong lưới thiết kế truy vấn, bấm chuột phải vào đường nối bạn muốn loại bỏ, rồi bấm Xóa.

Đầu Trang

bản ghi vào bảng

quan hệ

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.