MS Access - 聯接



資料庫是由多個數據表組成的集合,這些表之間存在邏輯關係。您可以使用關係透過它們共有的欄位連線表。一個表可以屬於任意數量的關係,但每個關係總是恰好包含兩個表。在查詢中,關係由聯接表示。

什麼是聯接

聯接指定如何組合資料庫中來自兩個或多個表中的記錄。從概念上講,聯接與表關係非常相似。事實上,聯接之於查詢,如同關係之於表。

本章將討論以下兩種基本的聯接型別:

  • 內部聯接
  • 外部聯接

這兩種聯接都可以輕鬆地透過查詢設計檢視建立。

內部聯接

現在讓我們瞭解內部聯接

  • 最常見的聯接型別是內部聯接,它也是 Microsoft Access 中的預設聯接型別。
  • 內部聯接僅顯示兩個表中聯接欄位相等的那些行或記錄。
  • 此聯接型別檢視那些公共欄位及其包含的資料。它只顯示匹配項。
Inner Join

外部聯接

現在讓我們瞭解外部聯接

  • 外部聯接顯示一個表中的所有行,以及另一個表中聯接欄位相等的那些行或記錄。
  • 換句話說,外部聯接顯示一個表中的所有行以及另一個表中對應的行。
Outer Join

還有其他聯接型別:

左外部聯接和右外部聯接

現在讓我們瞭解左外部聯接右外部聯接

  • 您可以選擇將顯示所有行的表。
  • 您可以建立一個左外部聯接,它將包含第一個表中的所有行。
Left Join
  • 您可以建立一個右外部聯接,它將包含第二個表中的所有行。
Right Join

現在讓我們轉到“建立”選項卡,並從設計檢視建立一個查詢。選擇tblProjectstblTasks,然後關閉“顯示錶”對話方塊,如下圖所示。

TblTasks

新增來自tblProjects表的ProjectName欄位,以及來自tblTasks表的TaskTitle、StartDateDueDate欄位。

Add Project Name

現在讓我們執行查詢。

Project Details

我們只顯示了少數幾個專案的記錄。其中一些專案有很多與該專案相關的任務,這些資訊透過ProjectID欄位相關聯。

  • 當我們在 Microsoft Access 中建立此查詢時,Access 將使用我們建立的關係。

  • 預設情況下,它建立的是所謂的這兩個欄位之間的內部聯接,這兩個表之間的內部聯接,這就是它如何將這兩個表中的資訊關聯起來的方式。

  • 它只向我們顯示匹配項,因此當我們執行此查詢時,tblProjects中列出的許多其他專案不會顯示為我們此查詢記錄集的一部分,這是因為這兩個表是如何透過內部聯接連線在一起的,而內部聯接又是任何查詢的預設聯接。

但是,如果您想更改關係,假設您想建立一個外部聯接,或者換句話說,顯示tblProjects中的所有專案,該表中的每個記錄,以及tblTasks中的所有任務 - 開啟聯接屬性;我們可以透過雙擊關係線來簡單地做到這一點。

Join Properties

Access 將在“聯接屬性”對話方塊中顯示左表名和右表名。

  • 左列名和右列名,第一個單選按鈕是隻包含兩個表中聯接欄位相等的那些行,這就是內部聯接,這是在建立關係時,在查詢中建立聯接時預設選擇的,但是,您可以更改它。

  • 我們還有另外兩個選項;我們可以包含tblProjects中的所有記錄,以及tblTasks中聯接欄位相等的那些記錄,這是一個左外部聯接。

  • 我們還有一個選項,包含tblTasks中的所有記錄,以及tblProjects中聯接欄位相等的那些記錄,這是一個右外部聯接。

這些就是您可以輕鬆地從設計檢視建立的不同型別的聯接。讓我們選擇第二個選項,即左外部聯接,然後單擊確定

現在讓我們看看其他步驟:

Other Steps

當您檢視關係線時,您將看到一個指向tblTasksProjectID的小箭頭。當您執行此查詢時,您將看到以下結果。

Arrow Pointing Results

您可以看到它向我們顯示了每個專案名稱,無論它是否具有相關的任務。您還將看到一堆空欄位。所有這些都將為空白,因為在tblTasks中沒有相關資訊,而這些欄位來自那裡。現在讓我們再次轉到設計檢視並雙擊關係線。

Related Task

在“聯接屬性”對話方塊中,選擇第三個選項,即右外部聯接,然後單擊確定

Other Steps

現在看看我們的關係線。您將看到一個小箭頭現在指向tblProjects中的ProjectID。當您執行此查詢時,您將看到以下結果。

Relationship Line

自聯接

自聯接是另一種型別的聯接。自聯接關聯同一表中匹配的欄位。例如,檢視包含主管欄位的員工表,該欄位引用同一表中另一個欄位(員工 ID)中儲存的相同型別的編號。

Self Joins

如果我們想知道 Kaitlin Rasmussen 的主管是誰,我們將不得不獲取該主管欄位中儲存的編號,並在同一表的員工 ID 欄位中查詢它,以便知道 Charity Hendricks 是主管。

此表不是關係資料庫的理想結構,因為它沒有規範化。

如果我們遇到要建立一個查詢的情況,該查詢只列出員工姓名及其主管的姓名,那麼除非我們建立一個自聯接,否則我們沒有簡單的查詢方法。

要檢視自聯接,請建立一個包含以下欄位的表並輸入一些資料。

Create Table

在這裡,我們想再次建立一個列表,其中包含員工的姓名,然後是主管的姓名。讓我們從查詢設計檢視建立一個查詢。

現在,新增tblEmployees表。

Add TblEmployees

關閉此對話方塊。

現在,新增員工的姓名。

Names of Employee

現在我們需要一種方法來建立此表與其自身之間的關係。為此,我們需要開啟顯示錶對話方塊並再次新增 tblEmployees。

Show Table Dialog Box

我們在該查詢檢視中建立了同一表的另一個副本。現在,我們需要建立自聯接。為此,請單擊tblEmployees表中的主管,按住滑鼠按鈕,然後將其直接拖放到複製的表tblEmployees_1中的EmployeeID之上。然後,新增該複製表中的姓名。

Create Self Join

現在讓我們執行您的查詢,您將看到以下結果。

Display Names

它顯示了員工的姓名以及他們主管的姓名。這就是您在 Microsoft Access 中建立自聯接的方式。

廣告