Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Tóm tắt

Bài viết này thảo luận về việc sử dụng các kết nối trong Microsoft query. Tham gia là phương pháp mà bạn có thể sử dụng với cơ sở dữ liệu để xác định và minh họa mối quan hệ giữa hai bảng. Trong Microsoft query, bạn có thể tạo và thao tác các kiểu kết hợp khác nhau. Trong nhiều trường hợp, truy vấn Microsoft tham gia các bảng trong truy vấn của bạn cho bạn. Các liên kết được đại diện bởi các đường kết nối các bảng trong ngăn bảng. Các chủ đề được bao phủ trong bài viết này bao gồm: What Is a Join? Inner Joins SQL Statements Outer Joins Subtract Joins Full Outer Joins Self Joins Equi-Joins Natural Joins Cartesian Products

Thông tin Bổ sung

Tham gia là gì?

Tham gia là một kết nối giữa hai bảng trong đó hai bảng được sáp nhập theo một trường mà họ có chung, tạo một bảng ảo mới (có thể được lưu ra dưới dạng một bảng thực). Ví dụ, với hai bảng sau đây: Color_Table: Join_Field Color_Field 1 Red 2 Blue 3 Green Pattern_Table: Join_Field Pattern_Field 2 Striped 3 Checkered 4 Polka-Dot một đơn giản tham gia giống như sau: Join_Field Color_Field Pattern_Field 2 Blue Striped 3 Green Checkered Bảng kết quả chỉ chứa các bản ghi 2 và 3 trong trường Join_Field vì chúng là các bản ghi duy nhất tồn tại trong cả Color_Table và Pattern_Table. Ví dụ thực tế về gia nhập là danh sách sản phẩm và nhà sản xuất của người bán lẻ; bảng sản phẩm và bảng nhà cung cấp có thể được tham gia vào một trường ID sản phẩm.

Gia nhập bên trong

Tham gia trong ví dụ trước, được gọi là nối trong, là kiểu tham gia đơn giản nhất. Thông thường, bạn chỉ muốn dùng một phần nhỏ của các trường trong bảng. Ví dụ, trong một tham gia bên trong thực, chẳng hạn như trên, bạn có thể muốn loại trừ Join_Field, sao cho nối sẽ trông như thế này: Color_Field Pattern_Field Blue Striped Green Checkered Trong Microsoft query, tham gia bên trong là kiểu nối mặc định (để biết thêm thông tin, hãy xem trang 105 trong hướng dẫn "người dùng của Microsoft query", phiên bản 1,0).

Câu lệnh SQL

Câu lệnh ngôn ngữ truy vấn có cấu trúc (SQL) chọn là một kiểu macro mà bạn có thể sử dụng khi tạo một nối kết. Lưu ý rằng SQL rất khác với các ngôn ngữ macro khác của Microsoft Excel (Visual Basic for Applications và ngôn ngữ macro Excel 4,0). Bạn không cần phải tìm hiểu SQL để dễ dàng tạo các tham gia trong Microsoft query. Mỗi gia nhập đều có một câu lệnh SELECT được liên kết với nó. Bạn có thể xem câu lệnh SELECT cho bất kỳ tham gia nào trong Microsoft query bằng cách bấm "SQL" trên thanh công cụ. Giống như bản ghi macro của Microsoft Excel, bạn có thể sử dụng truy vấn để ghi lại câu lệnh SELECT. Không giống như bản ghi macro của Microsoft Excel, bản ghi đã chọn câu lệnh chọn luôn bật và không bị tắt. Sau đây là cách lệnh chọn có thể tìm trong Microsoft query để tham gia vào nội bộ bên trong: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM `c:\database`.Color_Table, `c:\database`.Pattern_Table WHERE Color_Table.Join_Field = Pattern_Table.Join_Field Lưu ý rằng chúng tôi dùng tên cơ sở dữ liệu ' C:\database ' có. MDB là phần mở rộng tên tệp cho cơ sở dữ liệu Microsoft Access, có thể có nhiều bảng trong một tệp. Trong một số cơ sở dữ liệu khác, chẳng hạn như biểu định, nghịch lý và FoxPro, mỗi bảng phải có tệp riêng của mình. Trong những trường hợp này, cú pháp SQL có thể xuất hiện dư thừa vì tên bảng luôn giống như tên tệp mà không có phần mở rộng. Cú pháp SQL thay đổi giữa các công cụ truy vấn; Ví dụ, trong Microsoft Access truy vấn từ ví dụ trên, giống như sau: SELECT Color_Table.[Color_Field], Pattern_Table.Pattern_Field FROM Pattern_Table INNER JOIN Color_Table ON Pattern_Table.[Join_Field] = Color_Table.[Join_Field]; Đường dẫn đến bảng không được sử dụng trong Microsoft Access vì bảng nằm trong tệp Microsoft Access. MDB. Ngay cả khi một bảng bên ngoài được đính kèm và được sử dụng trong truy vấn, câu lệnh Microsoft Access SQL không hiển thị đường dẫn đến bảng bên ngoài.

Tham gia bên ngoài

Một kiểu tham gia khác được gọi là tham gia bên ngoài. Với một tham gia bên ngoài, bạn sẽ nhận được tất cả các bản ghi từ một bảng và chỉ những bản ghi này từ bảng khác có kết hợp các giá trị từ bảng đầu tiên. Điều này có thể để lại một số mục nhập trống của trường hoặc "null". Đối với bất kỳ hai bảng nào được tham gia, có hai nối ngoài có thể xảy ra, "nối ngoài cùng bên trái" và "Right Outer join" (được đặt tên như vậy vì bạn thường xem các bảng song song). Sử dụng hai bảng trước đó trong ví dụ, sau đây là một trong hai nối ngoài có thể xảy ra: Join_Field Color_Field Pattern_Field 1 Red (NULL) 2 Blue Striped 3 Green Checkered Các tham gia khác có thể là như sau: Join_Field Color_Field Pattern_Field 2 Blue Striped 3 Green Checkered 4 (NULL) Polka-Dot LƯU ý: trong một tham gia, bạn không nhìn thấy từ "NULL" khi bạn xem dữ liệu; sử dụng từ khóa "NULL" khi bạn đang làm việc với gia nhập. Trong Microsoft query, cả hai loại tham gia bên ngoài có thể được tạo dễ dàng bằng cách sử dụng chuột (để biết thêm thông tin về quy trình này, hãy xem trang 112 của hướng dẫn "người dùng của Microsoft query," Phiên bản 1,0). Sau đây là cách lệnh SQL có thể tìm ví dụ thứ hai về một nối ngoài: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `c:\database`.Color_Table LEFT OUTER JOIN `c:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} Để tạo một ví dụ thực tế của một gia nhập bên ngoài, hãy tạo danh sách sản phẩm của một công ty với số lượng doanh số cho các sản phẩm đã được bán nhưng không loại trừ các sản phẩm chưa được bán. Để thực hiện điều này, hãy dùng một trường ID sản phẩm để gia nhập bảng sản phẩm và bảng bán hàng.

Gia nhập trừ

Một loại hình thứ ba là gia nhập trừ. Một tham gia trừ là đối diện của một nối ngoài; nó chỉ bao gồm những bản ghi đó trong một bảng không khớp với bất kỳ bản ghi nào trong bảng khác. Giống như tham gia bên ngoài, có hai liên kết có thể trừ cho bất kỳ hai bảng nào mà bạn muốn gia nhập; Tuy nhiên, chúng thường không được gọi là "trừ sang trái gia nhập" hoặc "phải gia nhập trừ". Trừ các trường thường trả về chỉ từ một trong các bảng, vì theo định nghĩa của các trường của bảng kia chỉ trả về giá trị NULL. Sau đây là một trong những gia nhập trừ có thể xảy ra: join_Field Color_Field 1 Red và đây là những điều khác: Join_Field Pattern_Field 4 Polka-Dot Trong Microsoft query, một tham gia trừ được tạo ra bằng cách tạo một tham gia bên ngoài, sau đó dùng tiêu chí "là NULL" trên trường thích hợp (Pattern_Field trong ví dụ ở trên; Color_Field trong ví dụ thứ hai) để loại trừ các bản ghi khớp với các bảng. Sau đây là cách lệnh SQL có thể tìm kiếm việc trừ đầu tiên ở trên: SELECT Color_Table.Join_Field, Color_Table.Color_Field FROM {oj `c:\database`.Color_Table LEFT OUTER JOIN `c:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} WHERE (Pattern_Table.Pattern_Field Is Null) Để tạo một ví dụ thực tế của một gia nhập trừ, một danh sách khách hàng chưa có thứ tự ra lệnh gần đây. Để thực hiện điều này, hãy dùng một trường ID đơn hàng để tham gia một bảng khách hàng và bảng đơn hàng.

Tham gia bên ngoài đầy đủ

Một kiểu tham gia thứ tư là tham gia bên ngoài đầy đủ. Một nối ngoài đầy đủ là sự kết hợp của một nối ngoài cùng với gia nhập trừ miễn phí của nó. Một nối ngoài đầy đủ bao gồm tất cả các bản ghi từ cả hai bảng và tích hợp các bản ghi đó là chung giữa hai bảng. Sau đây là một nối ngoài đầy đủ: Join_Field Color_Field Pattern_Field 1 Red (NULL) 2 Blue Striped 3 Green Checkered 4 (NULL) Polka-Dot Trong Microsoft query, một nối ngoài đầy đủ được tạo ra bằng cách chèn toán tử liên hợp trên dòng riêng giữa câu lệnh chọn của gia nhập bên ngoài và câu lệnh SELECT của gia nhập trừ (xem ở trên). Để tạo một tham gia bên ngoài đầy đủ trong Microsoft query, hãy làm theo các bước sau đây để tạo câu lệnh SQL tương ứng:

  1. Tạo một tham gia bên ngoài, sau đó bấm vào mới trên menu Tệp và tạo một gia nhập trừ.

  2. Sao chép SQL của gia nhập trừ.

  3. Chuyển sang tham gia bên ngoài, nhập liên minh Word trên dòng riêng của nó bên dưới câu lệnh SQL của gia nhập bên ngoài, dán SQL trừ tham gia bên dưới từ liên minh Word, và đóng cửa sổ trừ của gia nhập.

Lưu ý Các kết quả của bảng sau đây sẽ bỏ lỡ giá trị Join_Field "4" vì bản ghi có giá trị Join_Field bằng 4 nằm trong bảng Pattern_Table. Các câu lệnh SQL bên dưới, chọn trường Pattern_Table. John_Field. Join_Field Color_Field Pattern_Field (NULL) Polka-Dot 1 Red (NULL) 2 Blue Striped 3 Green Checkered Dưới đây là cách SQL có thể tìm các tham gia bên ngoài đầy đủ (các lệnh bên dưới nhà điều hành UNION được dán): SELECT Color_Table.Join_Field, Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `C:\database`.Pattern_Table LEFT OUTER JOIN `C:\database`.Color_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} UNION SELECT Color_Table.Join_Field, Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `C:\database`.Color_Table LEFT OUTER JOIN `C:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} WHERE (Color_Table.Color_Field Is Null) or(Pattern_Table.Pattern_Field Is Null) Để tạo một ví dụ thực tế về một nối ngoài đầy đủ, hãy phối các danh sách khách hàng chồng lấp được dùng bởi các bộ phận khác nhau, bao gồm số Fax (chỉ trên danh sách thứ nhất) và tên email Internet (chỉ trong danh sách thứ hai). Mỗi bộ phận có thể tiếp tục sử dụng danh sách một phần của nó trong khi có danh sách hoàn thành, được tham gia sẵn dùng. Họ có thể được tham gia vào một trường ID khách hàng.

Tự gia nhập

Một loại thứ năm tham gia là tự gia nhập. Tự gia nhập là một kết nối mà một trường trong một bảng phù hợp với một trường khác nhau trong một bản sao của cùng một bảng. Sử dụng bảng ví dụ này: Table_Three Employee_ID Employee_Name Reports_To 1 Bob 3 2 Sue (NULL) 3 Jim 2 4 Jane 3 và bản sao của nó, như sau: Table_Three_01 Employee_ID Employee_Name Reports_To 1 Bob 3 2 Sue (NULL) 3 Jim 2 4 Jane 3 Có thể sử dụng tự tham gia để tạo danh sách tên nhân viên với tên người giám sát của họ. Employee_ID trong Table_Three sẽ được gia nhập với Reports_To trong Table_Three_01. Sau đây là cách có thể xem trước: Employee_Name Employee_Name Bob Jim Sue (NULL) Jim Sue Jane Jim Tuy nhiên, vì nó khó có thể có cùng tên trường cho cả hai trường, hãy thay đổi một trong các tên trường, như sau: Employee_Name Supervisor Bob Jim Sue (NULL) Jim Sue Jane Jim Sau đây là cách SQL có thể tìm kiếm tự tham gia: SELECT table_three.Employee_Name, table_three_01.Employee_Name 'Supervisor' FROM `c:\database`.table_three, `c:\database`.table_three_01 WHERE table_three.Employee_ID = table_three_01.Reports_To Khi bạn trả về dữ liệu sang Microsoft Excel, đó là không sử dụng để đổi tên trường trong Microsoft query. Điều này đúng vì Microsoft Excel dùng tên trường gốc. Để biết thêm thông tin về sự cố này, vui lòng xem bài viết sau đây trong cơ sở tri thức Microsoft: 121551 : trường thay vì tên cột trong MSQUERY trở lại Excel macro Microsoft Excel phải thay đổi tên cột mỗi khi dữ liệu được trả về được làm mới (trừ khi bạn trả về dữ liệu trong pivottable, trong trường hợp đó, Pivot có thể tạo và giữ tên

Hàm Equi-join và Natural join

Hầu như tất cả các tham gia, bao gồm tất cả các ví dụ cho đến nay, là Equi-tham gia và gia nhập tự nhiên. Ý nghĩa của các thuật ngữ này có ý nghĩa nhỏ đối với người dùng trung bình của truy vấn Microsoft, nhưng hai đoạn văn tiếp theo sẽ cố gắng giải thích các điều khoản cho những người có thể tò mò. Hàm Equi-join là một nối kết trong các bản ghi được truy nhập dựa trên việc các trường gia nhập có giá trị phù hợp trong cả hai bảng. Điều đó có thể có vẻ như chỉ là một định nghĩa của một gia nhập, nhưng nó không phải là. Ví dụ về tham gia không bằng không bằng tham gia là một nối trong đó các bản ghi trong bảng thứ nhất được gia nhập vào những bản ghi này trong bảng thứ hai mà trường đã kết nối trong bảng thứ nhất là lớn hơn (thay vì bằng) trường đã tham gia trong bảng thứ hai (hoặc nhỏ hơn, hoặc bất kỳ thứ gì ngoài bằng). Đương nhiên, điều này trả về bản ghi thêm so với hàm Equi-join. Một tham gia tự nhiên là một trong các trường được trả về một trong hai bảng. Vì hai trường này theo định nghĩa giống hệt nhau trong hàm Equi-join, nó được dư thừa để đưa vào cả hai. Để tham gia không bằng nhau, điều quan trọng là phải bao gồm cả hai trường đó. Vì vậy, Equi-tham gia và gia nhập tự nhiên đi cùng nhau. Bạn sẽ muốn có một Equi-JOIN (mô tả hầu hết các liên kết) để tự nhiên tham gia bằng cách chỉ trả về một trong các trường được gia nhập; Tuy nhiên, nếu bạn đã bao giờ sử dụng nối không bằng, bạn cũng có thể muốn thực hiện một tham gia không tự nhiên bằng cách trả về cả hai trường được gia nhập. Có các loại tham gia khác. Toàn bộ các tham gia đã được xác định gần đây nhất trong 1992 và tiêu chuẩn này được gọi là SQL-92. Một số tham gia không quan trọng đối với người dùng Microsoft Excel vì những tham gia này thực hiện những việc dễ dàng hơn trong Microsoft Excel.

Sản phẩm Descartes

Bạn đang cố gắng trả về dữ liệu từ hai hoặc nhiều bảng mà không có bất kỳ liên kết nào được gọi là "sản phẩm Descartes". Sản phẩm Descartes được định nghĩa là tất cả các hàng có thể xảy ra trong tất cả các bảng. Hãy chắc chắn rằng bạn đã tham gia trước khi tìm cách trả về dữ liệu, vì một sản phẩm Descartes trên bảng có nhiều bản ghi và/hoặc trên nhiều bảng có thể mất vài giờ để hoàn thành. Sau đây là một sản phẩm được sử dụng như sau trong hai bảng ví dụ; lưu ý rằng bảng này chỉ là 3 bản ghi thời gian 3 bản ghi, trong đó sản lượng tổng số là 9 bản ghi. Tuy nhiên, hãy tưởng tượng nếu thay vào đó, bảng đã được 100 bản ghi 1.000 Times Times 10.000 Records; sau đó, bảng sẽ chứa các bản ghi 1.000.000.000! Join_Field Join_Field Color_Field Pattern_Field 1 2 Red Striped 1 3 Red Checkered 1 4 Red Polka-Dot 2 2 Blue Striped 2 3 Blue Checkered 2 4 Blue Polka-Dot 3 2 Green Striped 3 3 Green Checkered 3 4 Green Polka-Dot Đôi khi, một số người dùng muốn sử dụng một sản phẩm Descartes; Tuy nhiên, hầu hết những người dùng có được họ làm như vậy vô tình, và thường bị nhầm lẫn với chúng. Vì hầu hết người dùng loại trừ hầu hết các trường trong một tham gia, một sản phẩm có giá trị thực sự có thể dễ dàng trông như perplexing như sau: Color_Field Red Red Red Blue Blue Blue Green Green Green Nếu bản ghi 100 được thêm vào Pattern_Table, truy vấn này sẽ có 309 bản ghi (103 bản ghi mỗi màu đỏ, lam và xanh lục). Các sản phẩm Descartes có câu lệnh chọn tương đối đơn giản. Sau đây là cách SQL có thể tìm kiếm sản phẩm được bao quanh sau: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM `c:\database`.Color_Table, `c:\database`.Pattern_Table Ví dụ thực tế của sản phẩm Descartes sẽ là tạo danh sách tất cả các tùy chọn có thể có trong một sản phẩm hàng hóa, với Tổng giá trị cho mỗi kết hợp.

Tham khảo

Hướng dẫn của người dùng Microsoft query "," Phiên bản 1,0, trang 101-114, 123-131 hai cuốn sách sau đây không được bao gồm trong bất kỳ sản phẩm Microsoft nào và không được Microsoft sản xuất. Các sản phẩm của bên thứ ba được thảo luận tại đây được sản xuất bởi nhà cung cấp độc lập với Microsoft; chúng tôi không thực hiện bảo hành, ngụ ý hoặc bằng cách khác, liên quan đến hiệu suất hoặc độ tin cậy của sản phẩm này. "Tìm hiểu về SQL mới: một hướng dẫn đầy đủ", "Morgan Kaufmann Publishers, Inc., 1993. "Joe Celko của SQL for smarties: Advanced SQL Programming," Morgan Kaufmann Publishers, Inc., 1995. Để biết thêm thông tin về việc tạo kết nối trong Microsoft query, hãy chọn nút tìm kiếm trong trợ giúp và nhập: joins, overview

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ú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×