Tham gia bảng và truy vấn

Lưu ý: Chúng tôi muốn cung cấp cho bạn nội dung trợ giúp mới nhất ở chính ngôn ngữ của bạn, nhanh nhất có thể. 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. Vui lòng cho chúng tôi biết ở cuối trang này rằng thông tin có hữu ích với bạn không? Dưới đây là bài viết bằng Tiếng Anh để bạn tham khảo dễ hơn.

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

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

Trong bài viết này

Tổng quan

Các kiểu phép nối

Hiện hàng mà giá trị chung tồn tại trong cả hai bảng được nối.

Hiển thị tất cả các hàng từ một bảng và hàng tương ứng của 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 mà một giá trị chung tồn tại

Nối chéo

Gia nhập bảng dựa trên sự không ngang bằng của giá trị trường

Xóa bỏ phép nối

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 sử dụng mối quan hệ để kết nối bảng theo các trường mà họ có chung. Bảng có thể là một phần của bất kỳ số nào của mối quan hệ, nhưng từng mối quan hệ luôn có chính xác hai bảng. Trong một truy vấn, mối quan hệ được thể hiện bằng một phép nối.

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

Tham gia hoạt động tương tự với tiêu chí truy vấn trong đó họ thiết lập quy tắc 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ư tiêu chí, nối cũng chỉ rõ rằng mỗi cặp hàng thỏa mãn các điều kiện tham gia sẽ được kết hợp trong tập bản ghi để hình thành nên một hàng.

Không có bốn loại cơ bản của nối: nối, nối ngoài, nối chéo và nối không ngang bằng. Bài viết này khám phá mỗi loại gia nhập, bạn có thể sử dụng, tại sao bạn sử dụng mỗi loại, và làm thế nào để tạo phép nối.

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

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

Dòng này giữa các bảng đại diện cho phép nối. Bấm đúp vào phép nối để mở các Thuộc tính nối (được mô tả) hộp thoại và xem lại hoặc thay đổi.

Nối đôi khi có hướng. Khu vực này của hộp thoại hiển thị bạn nào là bảng mà tham gia, và trường nào được sử dụng để nối bảng.

Khu vực này xác định kiểu 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 phải.

Các trường từ cả hai bảng có thể dùng, và dữ liệu liên quan đến một nhiệm vụ đã được hiển thị từ mỗi. Trong nối, không có dữ liệu khác được đưa vào. Trong một 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 kiểu phép nối

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

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

Nối trong là một mà truy nhập chỉ bao gồm dữ liệu từ bảng nếu không 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 nối. Khi bạn tạo một nối và không xác định loại nối thật, Access giả định bạn muốn nối. Nối 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 giá trị được chia sẻ – để bạn chỉ thấy dữ liệu khi có một ảnh hoàn thành.

Nối ngoài: tất cả các dữ liệu liên quan 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 như nối, nhưng thêm các hàng còn lại từ một trong các bảng. Nối ngoài không có 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 phép nối – và một nối ngoài 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 hoàn toàn: tất cả dữ liệu, kết hợp nơi nào có thể

Trong một số hệ thống, 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 kết hợp khi chúng tương ứng. Còn gọi là một nối ngoài đầy đủ và Access không rõ ràng hỗ trợ chúng. Tuy nhiên, bạn có thể dùng nối chéo và tiêu chí để đạt được hiệu quả tương tự.

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

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

Nối không ngang bằng: thích nối thường nhưng dùng sự so sánh khác để kết hợp hàng

Nối không ngang bằ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 hay không và làm thế nào để kết hợp dữ liệu. Nối không ngang bằng không rõ ràng được hỗ trợ, nhưng bạn có thể dùng nối chéo và tiêu chí để đạt được hiệu quả tương tự.

Hiện hàng mà giá trị chung tồn tại trong cả hai bảng được nối.

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

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

Làm thế nào để tôi dùng nối?

Hầu hết thời gian, 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 một truy vấn đã có mối quan hệ, Access sẽ tự động tạo nối giữa từng cặp bảng có 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 vẫn chưa tạo mối quan hệ, Access sẽ tự động tạo nối nếu bạn thêm hai bảng vào một truy vấn và các bảng đó mỗi có một trường có cùng hoặc kiểu dữ liệu tương thích và một trong các trường gia nhập 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 chiếu không áp.

Nếu bạn thêm truy vấn vào truy vấn của bạn, và không phải tạo mối quan hệ giữa các truy vấn, Access không tự động tạo nối giữa các truy vấn hoặc giữa các bảng và truy vấn. Nói chung, bạn nên tạo chúng chính bạn. Bạn tạo một nối 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 được xác định trong SQL trong mệnh đề FROM, như minh họa dưới đây:

FROM table1 INNER JOIN table2 ON table1.so sánh trường 1 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 của nối, hãy xem chủ đề thao tác nối trong.

Đầu Trang

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

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

Nối ngoài có thể để nối ngoài hoặc có thể là nối ngoài bên phả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 mệnh đề FROM và chỉ các hàng từ bảng khác, nơi trường tham gia có chứa giá trị chung 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 mệnh đề FROM và chỉ các hàng từ bảng khác, nơi trường tham gia có chứa 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ên phải bảng trong một tham gia đã cho bằng cách bấm đúp vào phép nối và sau đó tìm kiếm trong hộp thoại Thuộc tính nối . Bạn có thể cũng có thể chuyển sang dạng xem SQL và sau đó xem xét mệnh đề FROM.

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

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

Bạn tạo một nối ngoài bằng cách sửa đổi nối hiện có. Nếu không có nối tồn tại, bạn tạo một, và sau đó thay đổi nó thành nối 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 phép nối 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ị đường nối và hiển thị một mũi tên trỏ từ nguồn dữ liệu nơi 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 tham gia sẽ được đưa vào.

Nối ngoài không xác định

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

TỪ table1 [trái | PHẢI] nối table2
trên table1.field1 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 nối ngoài, hãy xem chủ đề tham gia bên trái, 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 mà 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 giá trị phổ biến, bạn có thể sử dụng một nối ngoài đầy đủ. Truy nhập không rõ ràng hỗ trợ nối ngoài đầy đủ, nhưng bạn có thể đạt được hiệu quả tương tự bằng cách sử dụng truy vấn hợp. Thủ tục 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 một nối ngoài đầy đủ:

  1. Tạo 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 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 bỏ dấu chấm phẩy ở cuối mệnh đề FROM, sau đó 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 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 ở bước 3.

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

  8. Xóa bỏ dấu chấm phẩy ở cuối thứ hai từ mệnh đề, và sau đó nhấn ENTER.

  9. Thêm mệnh đề WHERE xác định giá trị của trường nối là giá trị 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 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 mệnh đề WHERE để cho biết phần 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 sẽ khác nhau từ bên trong và ngoài nối trong rằng họ không rõ ràng được thể hiện trong Access. Trong nối chéo, mỗi hàng của một bảng được kết hợp với mỗi hàng từ bảng khác, dẫn đến kết quả gì được gọi là một sản phẩm chéo hoặc một tích. Bất kỳ lúc nào bạn chạy truy vấn có bảng được không rõ ràng nối, các sản phẩm chéo là kết quả. Nối chéo ngoài dự định thường, nhưng có các trường hợp đó họ có thể hữu ích.

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

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

Làm thế nào để tôi dùng nối chéo?

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

Như bạn có thể hình dung, nối chéo ngoài dự định có thể tạo lớn số hàng trong kết quả truy vấn của bạn. Tuy nhiên, các kết quả sẽ nói chung vô nghĩa, 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 sẽ xuất hiện trong kết quả sẽ không tiện. Cuối cùng, truy vấn dùng nối chéo ngoài dự định 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 cần được gia nhập 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 ý số bản ghi nhiều nhỏ hơn.

Đầu Trang

Gia nhập bảng dựa trên sự không ngang bằng của giá trị trường

Nối không phải được dựa trên tương đương các trường. Gia nhập một có thể dựa trên bất kỳ toán tử so sánh, chẳng hạn như lớn hơn (>), ít hơn (<), hoặc không bằng (<>). Nối không dựa trên tương đương được gọi là nối không ngang bằng.

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 trường giá trị không bằng nhau, bạn dùng nối không ngang bằng. Thông thường, nối không ngang bằng dựa trên một trong hai lớn hơn (>), ít hơn (<), lớn hơn hoặc bằng (> =), hoặc nhỏ hơn hoặc bằng (< =) toán tử so sánh. Nối không ngang bằng dựa trên các thao tác toán tử không bằng (<>) có thể trả về hầu như nhiều hàng dưới dạng nối chéo và kết quả có thể khó diễn giải.

Làm thế nào để tôi có thể dùng một nối không ngang bằng?

Nối không ngang bằng 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 bằng cách sử 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 bằng các toán tử so sánh (=), và thay đổi nó đến toán tử bạn muốn dùng. Sau khi bạn thực hiện điều này, bạn có thể chỉ mở truy vấn trong dạng xem thiết kế lại nếu bạn thay đổi đầu tiên toán tử so sánh trở lại bằng (=) trong dạng xem SQL.

Xóa bỏ phép nối

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

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

  2. Nhấn xóa bỏ.

-hoặc-

  • Trong lưới thiết kế truy vấn, bấm chuột phải vào phép nối bạn muốn loại bỏ, sau đó bấm xóa.

Đầu Trang

Xem Thêm

Thêm bản ghi vào bảng bằng cách dùng một truy vấn chắp thêm

Kết hợp kết quả của vài truy vấn chọn bằng cách sử dụng truy vấn hợp

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

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

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.

×