Tham gia bảng và truy vấn

Khi bạn bao gồm nhiều nguồn dữ liệu trong truy vấn Access, bạn sử dụng các kết nối để giới hạn bản ghi mà bạn muốn xem, dựa trên nguồn dữ liệu có liên quan đến nhau như thế nào. Bạn cũng có thể sử dụng kết hợp các bản ghi từ các nguồn dữ liệu, sao cho mỗi cặp bản ghi từ các nguồn sẽ 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 hợp khác nhau và cho bạn biết cách sử dụng chúng trong một truy vấn. Theo mặc định, tham gia sẽ được tự động tạo nếu đã có một mối quan hệ giữa hai nguồn dữ liệu mà bạn sử dụng trong một truy vấn. Tham gia cũng được tạo nếu có các trường rõ ràng tương ứng với nhau. Bạn có thể xóa một gia nhập được tạo tự động. Bài viết này cung cấp thông tin cơ bản về các mối quan hệ bảng, bao gồm cách tạo một tài khoản.

Lưu ý: Bạn có thể tham gia các truy vấn theo cùng một cách mà bạn tham gia bảng và cũng có thể tham gia cả hai.

Trong bài viết này

Tổng quan

Các loại tham gia

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

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

Hiển thị tất cả các hàng từ cả hai bảng và gia nhập chúng có một giá trị chung tồn tại

Tham gia chéo

Tham gia bảng dựa trên một bất bình đẳng của giá trị trường

Xóa bỏ tham gia

Tổng quan

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

Khi bạn thêm bảng vào một truy vấn, Access sẽ tạo ra các kết hợp dựa trên mối quan hệ đã được xác định giữa các bảng. Bạn có thể tạo các nối kết theo cách thủ công trong truy vấn, ngay cả khi họ không đại diện cho 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à nguồn dữ liệu cho truy vấn, bạn có thể tạo các nối kết 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 dùng làm nguồn dữ liệu.

Tham gia cư xử tương tự như tiêu chí truy vấn trong đó họ thiết lập các quy tắc mà dữ liệu phải khớp với được bao gồm trong các thao tác truy vấn. Không giống như các tiêu chí, tham gia cũng xác đị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 RecordSet để tạo một hàng đơn lẻ.

Có bốn loại hình cơ bản gồm: nối bên trong, tham gia bên ngoài, tham gia chéo và tham gia không đều. Bài viết này khám phá từng loại tham gia mà bạn có thể sử dụng, tại sao bạn dùng từng kiểu và cách tạo kết nối.

Tham gia là các truy vấn mối quan hệ nào là các bảng: một dấu hiệu của dữ liệu như thế nào trong hai nguồn có thể được kết hợp dựa trên giá trị dữ liệu mà họ có chung. Sau đây là một hình minh họa trong dạng xem thiết kế truy vấn, với các thuộc tính của gia nhập 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 đại diện cho gia nhập. Bấm đúp vào một tham gia để mở hộp thoại thuộc tính nối (được mô tả) và xem lại hoặc thay đổi gia nhập.

Tham gia đôi khi được định hướng. Khu vực này của hộp thoại sẽ cho bạn biết rằng bảng nào trong nối kết và các trường được dùng để tham gia các bảng.

Khu vực này sẽ xác định kiểu nối: Option 1 là một nối bên trong, 2 là một nối ngoài bên trái, và 3 là một nối ngoài bên phải.

Các trường từ cả hai bảng đều có thể được dùng và dữ liệu liên quan đến một nhiệm vụ đã cho được hiển thị từ mỗi bảng. Trong một tham gia bên trong, không có dữ liệu nào khác được bao gồm. Trong một tham gia bên 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 tham gia

Có bốn loại hình cơ bản gồm: nối bên trong, tham gia bên ngoài, tham gia chéo và tham gia không đều. Tham gia chéo và các nối không đều là các kiểu nối nâng cao và hiếm khi được sử dụng, nhưng bạn nên biết về họ để có được sự hiểu biết đầy đủ về cách thức tham gia hoạt động.

Tham gia bên trong: chỉ có dữ liệu liên quan từ cả hai bảng được kết hợp

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

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

Một nối ngoài cũng giống như một gia nhập bên trong, nhưng thêm các hàng còn lại từ một trong các bảng. Tham gia bên ngoài là hướng: một 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 tham gia-và một 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 gia nhập.

Tham gia bên ngoài toàn bộ: tất cả dữ liệu, kết hợp có khả thi

Trong một số hệ thống, tham gia bên 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. Điều này được gọi là một tham gia bên ngoài đầy đủ, và Access không hỗ trợ rõ ràng. Tuy nhiên, bạn có thể sử dụng tham gia chéo và tiêu chí để đạt được hiệu ứng tương tự.

Tham gia chéo: tất cả dữ liệu, kết hợp mọi cách đều có thể xảy ra

Hầu hết thời gian, tham gia chéo là một hiệu ứng phụ của việc thêm hai bảng vào một truy vấn và sau đó quên gia nhập chúng. Access sẽ diễn giải điều này để có nghĩa là bạn muốn xem tất cả bản ghi từ một bảng được kết hợp với mọi bản ghi từ bảng khác-mọi kết hợp có thể có của các bản ghi. Vì không có dữ liệu nào có thể được kết hợp, loại tham gia này hiếm khi tạo ra kết quả hữu ích. Nhưng có một vài trường hợp khi tham gia chéo chỉ là những gì bạn cần.

Nối không ngang bằng: như một gia nhập thường xuyên, nhưng bằng cách sử dụng một so sánh khác để kết hợp các hàng

Tham gia bất bình đẳng sử dụng một toán tử khác với dấu bằng (=) để so sánh các giá trị và xác định có và cách kết hợp dữ liệu. Không được hỗ trợ không theo tên không đều, nhưng bạn có thể sử dụng tham gia chéo và tiêu chí để đạt được hiệu ứng tương tự.

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

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

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

Làm thế nào để tôi sử dụng tham gia bên trong?

Hầu hết thời gian, bạn không cần phải thực hiện bất cứ điều gì để sử dụng tham gia bên trong. Nếu các bảng bạn thêm vào một truy vấn đã có mối quan hệ, Access sẽ tự động tạo ra một tham gia bên trong giữa hai bảng có liên quan, khi bạn thêm 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 không tạo ra mối quan hệ, Access sẽ tự động tạo ra tham gia bên trong nếu bạn thêm hai bảng vào một truy vấn và các bảng này đều có một trường có cùng kiểu dữ liệu tương tự hoặc tương thích và một trong các trường tham gia là một khóa chính. Các 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 khảo không được áp thi.

Nếu bạn thêm truy vấn vào truy vấn của mình và đã không tạo mối quan hệ giữa các truy vấn đó, Access sẽ không tự động tạo ra các nối kết bên 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ự mình tạo. Bạn tạo một tham gia nội bộ bằng cách kéo một trường từ một nguồn dữ liệu đến 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 để tham gia nội bộ

Các nối bên trong được xác định trong SQL trong mệnh đề FROM, như được hiển thị dưới đây:

FROM table1 INNER JOIN table2 ON table1.field1 in so sánh 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 gia nhập bên trong, hãy xem thao tác tham giavào chủ đề.

Đầ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

Tham gia bên ngoài cho biết một truy vấn mặc dù một số hàng trên cả hai mặt của nối tương ứng chính xác, truy vấn sẽ bao gồm tất cả các hàng từ một bảng, cũng như các hàng từ bảng khác có chung một giá trị chung trên cả hai mặt của gia nhập.

Tham gia bên ngoài có thể được để lại bên ngoài tham gia hoặc có thể được kết nối bên ngoài. Trong một nối ngoài bên trái, truy vấn bao gồm tất cả các hàng từ bảng thứ nhất trong câu lệnh SQL từ mệnh đề và chỉ những hàng đó từ bảng khác nơi trường đã tham gia chứa các giá trị phổ biến cho cả hai bảng. Trong mộ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 câu lệnh SQL từ mệnh đề và chỉ những hàng đó từ bảng khác nơi trường đã tham gia chứa các giá trị phổ biến 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 tham gia đã cho bằng cách bấm đúp vào tham gia và sau đó tìm kiếm trong hộp thoại thuộc tính nối. 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 một tham gia bên ngoài sẽ không có các hàng tương ứng từ bảng khác, 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 một tham gia bên ngoài?

Bạn tạo một nối ngoài bằng cách sửa đổi một tham gia bên trong hiện có. Nếu không có tham gia bên trong nào, bạn sẽ tạo một, rồi thay đổi nó thành một nối ngoài.

Thay đổi tham gia bên trong thành nối ngoài

  1. Trong dạng xem thiết kế truy vấn, hãy bấm đúp vào tham gia 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ị tham gia và hiển thị một 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 mà chỉ những hàng đó thỏa mãn điều kiện gia nhập sẽ được đưa vào.

Tham gia bên ngoài mơ hồ

Nếu bạn tạo một truy vấn có chứa một nối trái và gia nhập bên trong, có thể Access sẽ không thể xác định thao tác tham gia nào để thực hiện trước tiên. Vì kết quả khác nhau tùy thuộc vào việc tham gia trái hoặc nối bên 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 để nó rõ ràng tham gia thực hiện trước tiên.

Cú pháp SQL cho một tham gia bên ngoài

Những người tham gia bên ngoài được xác định trong SQL trong mệnh đề FROM, như được hiển thị dưới đây:

TỪ table1 [trái | BÊN phải] tham gia table2
trên table1. field1 in so sánh 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 gia nhập bên ngoài, hãy xem chủ đề được gia nhập bên trái, bên phải tham gia hoạt động.

Đầu trang

Hiển thị tất cả các hàng từ cả hai bảng và gia nhập chúng có một giá trị chung tồn tại

Khi bạn muốn hiển thị tất cả các hàng từ hai bảng và gia nhập chúng dựa trên các giá trị phổ biến, bạn sẽ sử dụng một nối ngoài đầy đủ. Access không hỗ trợ rõ ràng là các liên kết ngoài cùng, 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 mục xem thêm .

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

  1. Tạo một truy vấn có một nối ngoài bên trái trên trường mà bạn muốn sử dụng để tham gia bên 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 tất cả khi bạn sử dụng truy vấn hợp để thực hiện một nối ngoài đầy đủ.

  6. Nhấn 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 sang trái tham gia vào mục phải gia nhập.

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

  9. Thêm mệnh đề WHERE xác định rằng giá trị của trường tham gia là NULL trong bảng thứ nhất đượ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 các mệnh đề sau đây:

    WHERE Products.ID IS NULL

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

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

Tham gia chéo

Tham gia chéo khác nhau từ các liên kết bên trong và bên ngoài trong đó họ không được trình bày rõ ràng trong Access. Trong một tham gia 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à những gì được gọi là sản phẩm chéo hoặc một sản phẩm Descartes. Bất kỳ lúc nào bạn chạy một truy vấn có các bảng không được gia nhập rõ ràng, một sản phẩm chéo là kết quả. Tham gia chéo thường không chủ ý, nhưng có những trường hợp có thể hữu ích.

Tại sao tôi nên dùng tham gia chéo?

Nếu bạn muốn kiểm tra mọi kết hợp có thể xảy ra giữa hai bảng hoặc truy vấn, hãy sử dụng tham gia chéo. Ví dụ, giả sử doanh nghiệp của bạn đã có năm tuyệt vời và bạn đang cân nhắc việc đưa lại cho khách hàng của bạn. Bạn có thể xây dựng một truy vấn mà mỗi khoản tiền mua của khách hàng, hãy tạo một bảng nhỏ có một số tỷ lệ phần trăm giảm giá có thể xảy ra và kết hợp hai trong một truy vấn khác để thực hiện tham gia chéo. Bạn sẽ kết thúc với một truy vấn Hiển thị một tập hợp giá trị giả định cho mỗi khách hàng.

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

Tham gia 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 bạn và không tạo ra ít nhất một tham gia rõ ràng cho từng bảng hoặc truy vấn. Access kết hợp mọi hàng từ từng bảng hoặc truy vấn không được gia nhập rõ ràng cho bất kỳ bảng hoặc truy vấn nào khác vào mọi hàng khác trong kết quả. Cân nhắc tình huống giảm giá từ đoạn văn trước đó. Giả sử bạn có khách hàng 91 và bạn muốn xem năm tỷ lệ phần trăm giảm giá có thể xảy ra. Chéo của bạn tham gia tạo ra 455 hàng (sản phẩm của 91 và 5).

Như bạn có thể tưởng tượng, tham gia chéo không chủ ý có thể tạo ra số lượng lớn các hàng trong kết quả truy vấn của bạn. Hơn thế nữa, các kết quả này thường 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 tham gia chéo không chủ ý 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 sẽ được gia nhập với nhau.

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

1. lưu ý số lượng lớn các bản ghi.

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

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

Đầu trang

Tham gia bảng dựa trên một bất bình đẳng của giá trị trường

Các liên kết không phải dựa trên các trường tương đương của các trường được gia nhập. Một tham gia có thể dựa trên mọi toán tử so sánh, 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 đều.

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 gia nhập không đều. Thông thường, các nối không đều dựa trên cả lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=), hoặc nhỏ hơn hoặc bằng (<=) so sánh các toán tử. Các tham gia không đều dựa trên toán tử không bằng (<>) có thể trở lại gần như nhiều hàng như chéo nối và kết quả có thể khó khăn khi diễn giải.

Làm thế nào để tôi sử dụng tham gia không đều?

Không được hỗ trợ giữa các không nhau 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 dùng dạng xem SQL. Tuy nhiên, bạn có thể tạo một nối trong dạng xem thiết kế, chuyển sang dạng xem SQL, tìm các toán tử equals (=), và thay đổi nó cho toán tử mà bạn muốn sử dụng. Sau khi bạn thực hiện điều này, bạn chỉ có thể mở truy vấn trong dạng xem thiết kế một lần nữa nếu trước tiên bạn thay đổi toán tử so sánh trở lại bằng (=) ở dạng xem SQL.

Xóa bỏ tham gia

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

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

  2. Nhấn Delete.

-hoặc-

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

Đầu trang

Lưu ý:  Trang này được dịch tự động nên có thể chứa các lỗi về ngữ pháp hoặc nội dung không chính xác. Mục đích của chúng tôi là khiến nội dung này trở nên hữu ích với bạn. Cho chúng tôi biết thông tin này có hữu ích hay không? Dưới đây là bài viết bằng tiếng Anh để bạn tham khảo..​

Xem Thêm

Thêm bản ghi vào bảng bằng cách sử dụng truy vấn chắp thêm

kết hợp kết quả của một vài truy vấn chọn bằng truy vấn hợp

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

tạo, sửa hoặc xóa bỏ mối quan hệ

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

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.

×