Kết nối với bảng và truy vấn

Kết nối với 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.

Phép nối là để truy vấn mối quan hệ giữa các bảng: là một chỉ báo cho thấy dữ liệu của hai nguồn có thể kết hợp dựa trên giá trị dữ liệu chung như thế nào. Dưới đây là minh họa về một phép nối trong Dạng xem Thiết kế truy vấn với thuộc tính của phép nối được mở trong 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.

Đôi khi, phép nối có hướng. Khu vực này của hộp thoại cho thấy bảng nào có trong phép nối và trường nào đang được 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 trái và 3 là nối ngoài phải.

Có thể dùng trường của cả hai bảng và dữ liệu gắn liền với tác vụ đã cho được hiển thị từ mỗi trường. Phép nối trong không đưa vào dữ liệu nào khác. Trong phép nối ngoài, các bản ghi không liên quan nhau của 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

Có bốn kiểu nối cơ bản: nối trong, 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 là những kiểu phép nối nâng cao hiếm khi được dùng, nhưng bạn vẫn nên biết về chúng để hiểu đầy đủ 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ừ hai bảng

Nối trong là phép nối mà ở đó Access chỉ đưa dữ liệu từ một bảng vào kết quả truy vấn nếu bảng liên quan có dữ liệu tương ứng và ngược lại. Trong hầu hết các trường hợp, bạn sẽ dùng nối trong. Khi bạn tạo nối kết và không xác định đó là kiểu nối gì thì Access giả định bạn muốn có nối trong. Nối trong rất hữu ích bởi vì nó 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ẻ - do đó bạn chỉ nhìn thấy dữ liệu khi có được bức tranh đầy đủ.

Nối ngoài: tất cả dữ liệu liên quan được kết hợp chính xác, cùng với tất 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 có thêm các hàng còn lại từ một trong hai bảng. Các nối ngoài đều có hướng: nối ngoài trái bao gồm tất cả các bản ghi từ bảng trái - bảng đầu tiên trong phép nối - và nối ngoài phải bao gồm tất cả bản ghi từ bảng 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, được kết hợp ở bất kỳ nơi nào có thể

Trong một vài hệ thống, nối ngoài có thể bao gồm tất cả các hàng từ cả hai bảng, trong đó hàng được kết hợp khi chúng tương ứng nhau. Đây là nối ngoài hoàn toàn và Access không công khai hỗ trợ hàng của bảng. Tuy nhiên, bạn có thể dùng nối chéo và tiêu chí để đạt được hiệu ứng như vậy.

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

Trong hầu hết các trường hợp, nối chéo là hiệu ứng phụ xảy ra khi thêm hai bảng vào truy vấn và rồi quên nối chúng. Access giả định điều này đồng nghĩa với việc 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 còn lại - mọi kết hợp có thể có của bản ghi. Do không có dữ liệu nào được kết hợp nên kiểu phép nối này hiếm khi cho ra kết quả hữu ích. Nhưng có một vài trường hợp mà bạn chỉ cần mỗi nối chéo.

Nối không ngang bằng: giống như phép 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 dùng toán tử thay vì dùng dấu bằng (=) để so sánh giá trị và xác định xem dữ liệu có kết hợp được không và làm thế nào để kết hợp. Nối không ngang bằng không được hỗ trợ trực tiếp rõ ràng nhưng bạn có thể dùng nối chéo và tiêu chí để đạt được cùng hiệu ứng.

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 chỉ hiển thị những hàng có giá trị khớp nhau trong trường được nối thì hãy dùng nối trong. Access tự động tạo nối trong.

Nối là phổ biến nhất kiểu nối. 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.

Tôi dùng nối trong như thế nào?

Trong hầu hết các trường hợp, bạn không cần phải làm gì để dùng nối trong. Nếu bảng mà bạn thêm vào truy vấn đã có sẵn quan hệ thì Access sẽ tự động tạo nối trong giữa mỗi cặp bảng liên quan với nhau 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" ở trên dòng nối để cho biết bảng nào đang ở phía "một" của quan hệ một - nhiều và 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 Hiển thị một đường giữa hai trường để hiển thị một tham gia đã được tạo ra.

Cú pháp SQL cho nối trong

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

TỪ table1 nối trong 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ể là nối ngoài trái hoặc nối ngoài phải. Trong nối ngoài trái, truy vấn bao gồm tất cả các hàng từ bảng thứ nhất 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 nối chứa giá trị chung cho cả hai bảng. Trong nối ngoài 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 nối chứa giá trị chung của 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ố hàng trên một phía của nối ngoài sẽ không có hàng tương ứng từ bảng kia nên một số trường được trả về trong kết quả truy vấn từ bảng còn lại sẽ trống khi hàng không tương ứng.

Tôi dùng nối ngoài như thế nào?

Bạn tạo nối ngoài bằng cách chỉnh sửa nối trong hiện có. Nếu không có sẵn nối trong nào, bạn hãy tạo nối trong rồi 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, hãy 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ị phép nối và hiện mũi tên trỏ từ nguồn dữ liệu nơi tất cả các hàng sẽ được bao gồm tới nguồn dữ liệu nơi chỉ có những hàng thỏa mãn điều kiện nối mới được bao gồm.

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 mệnh đề FROM trong SQL như hiển thị 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 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 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 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, hãy 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 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ả, 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.

Tôi dùng nối chéo như thế nà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
Một chéo ngoài dự định gia nhập 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
Sản phẩm chéo trả về bởi nối chéo ngoài dự định được mô tả ở trên.

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

Kết quả truy vấn đã sửa
Kết quả sau khi tạo phép nối chính xác.

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

Phép nối không cần phải dựa trên sự tương đương của trường được nối. Đây là phép nối 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 (<) hay không bằng nhau (<>). Phép nối này không dựa trên sự tương đương được gọi là nối không ngang bằng.

Nếu bạn muốn kết hợp hàng của hai nguồn dữ liệu dựa trên giá trị trường không bằng nhau thì hãy dùng nối không ngang bằng. Thông thường, nối không ngang bằng dựa trên 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 (<=). Nối không ngang bằng dựa trên toán tử không bằng nhau (<>) có thể trả về số lượng hàng nhiều gần bằng nối chéo và kết quả có thể khó hiểu.

Tôi dùng nối không ngang bằng như thế nào?

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 phép nối không mong muốn hoặc nếu bạn sơ ý tạo phép nối — ví dụ như phép nối giữa hai trường không có kiểu dữ liệu không tương tự 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 một số truy vấn chọn bằng cách sử dụ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ệ

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.

×