數(shù)據(jù)庫(kù)是允許彼此邏輯關(guān)系的數(shù)據(jù)表的集合。您可以使用關(guān)系,通過(guò)它們共有的字段來(lái)連接表。一個(gè)表可以是任意數(shù)量的關(guān)系的一部分,但是每個(gè)關(guān)系總是具有完全相同的兩個(gè)表。在查詢時(shí),關(guān)系由Join表示。
連接指定如何組合數(shù)據(jù)庫(kù)中兩個(gè)或多個(gè)表的記錄。從概念上講,連接非常類似于表關(guān)系。事實(shí)上,連接是查詢與表的關(guān)系。
以下是我們將在本章中討論的兩種基本類型的連接:
兩者都可以很容易地從查詢?cè)O(shè)計(jì)視圖創(chuàng)建。
現(xiàn)在讓我們來(lái)了解內(nèi)連接 -
現(xiàn)在讓我們了解什么是外連接-
還有其他連接類型 -
現(xiàn)在讓我們了解左外連接和右外連接 -
現(xiàn)在讓我們轉(zhuǎn)到創(chuàng)建選項(xiàng)卡并從設(shè)計(jì)視圖創(chuàng)建一個(gè)查詢。選擇tblProjects和tblTask??s,并關(guān)閉“顯示表”對(duì)話框,如下面的截圖所示。
從tblProjects中添加ProjectName字段,從tblTask??s表中添加TaskTitle,StartDate和DueDate。
現(xiàn)在讓我們來(lái)運(yùn)行查詢。
我們只顯示幾個(gè)項(xiàng)目的記錄。其中幾個(gè)項(xiàng)目有很多與該項(xiàng)目相關(guān)的任務(wù),這些信息通過(guò)ProjectID字段相關(guān)。
當(dāng)我們?cè)贛icrosoft Access中創(chuàng)建此查詢時(shí),Access將從我們創(chuàng)建的關(guān)系中獲取此關(guān)系。
默認(rèn)情況下,它在這兩個(gè)表之間創(chuàng)建這兩個(gè)字段之間的內(nèi)連接,這就是如何將這些信息與這兩個(gè)表相關(guān)聯(lián)。。
它只向我們顯示匹配,所以當(dāng)我們運(yùn)行此查詢,在tblProjects中列出的很多其他項(xiàng)目不會(huì)出現(xiàn)作為我們?cè)谶@個(gè)查詢中設(shè)置的記錄的一部分,這是因?yàn)?span>這兩個(gè)表如何通過(guò)內(nèi)連接(這是默認(rèn)的Join任何查詢)連接在一起。
然而,如果你想改變關(guān)系,讓我們說(shuō)你想創(chuàng)建一個(gè)外連接,或者換句話說(shuō),顯示來(lái)自tblProjects的所有項(xiàng)目,該表中的每個(gè)記錄,以及來(lái)自tblTask??s的所有任務(wù) - 打開(kāi)連接屬性;我們可以簡(jiǎn)單地通過(guò)雙擊關(guān)系線來(lái)做到這一點(diǎn)。
Access將在“加入屬性”對(duì)話框中顯示左表格名稱和右表格名稱。
左列名稱和右列名稱以及第一個(gè)單選按鈕僅包含兩個(gè)表中的連接字段相等的行,即內(nèi)連接,并且這是在創(chuàng)建關(guān)系時(shí)默認(rèn)選擇的,當(dāng)在查詢中創(chuàng)建連接時(shí),但是您可以更改它。
我們還有兩個(gè)其他選項(xiàng);我們可以包括來(lái)自tblProjects的所有記錄,并且只包括來(lái)自tblTask??s的那些記錄,其中連接字段相等,這一個(gè)是左外連接。
我們有第三個(gè)選項(xiàng),包括來(lái)自tblTask??s的所有記錄,只包括來(lái)自tblProjects的那些記錄,其中連接的字段是相等的,這一個(gè)是右外連接。
這些是您可以從設(shè)計(jì)視圖輕松創(chuàng)建的不同類型的連接。讓我們選擇第二個(gè)選項(xiàng),即左外連接,然后單擊Ok。
現(xiàn)在讓我們看看其他步驟 -
當(dāng)您查看關(guān)系線時(shí),您將在tblTask??s中看到一個(gè)指向ProjectID的小箭頭。運(yùn)行此查詢時(shí),您將看到以下結(jié)果。
你可以看到,它顯示了我們每個(gè)項(xiàng)目名稱,無(wú)論它是否有相關(guān)的任務(wù)。你還會(huì)看到一堆空字段。所有這些都將是空白的,因?yàn)樵趖blTask??s中沒(méi)有相關(guān)信息,這些字段來(lái)自?,F(xiàn)在讓我們?cè)俅无D(zhuǎn)到設(shè)計(jì)視圖,雙擊關(guān)系線。
在“加入屬性”對(duì)話框中,選擇用于右外連接的第三個(gè)選項(xiàng),然后單擊“確定”。
現(xiàn)在看看我們的關(guān)系線。你會(huì)看到一個(gè)小箭頭現(xiàn)在指向tblProjects中的ProjectID。運(yùn)行此查詢時(shí),您將看到以下結(jié)果。
自聯(lián)接是另一種類型的聯(lián)接。自連接涉及來(lái)自相同表內(nèi)的匹配字段。例如,查看員工表,其中有一個(gè)主管字段,該字段引用存儲(chǔ)在同一個(gè)表中的另一個(gè)字段(員工ID)中的相同類型的號(hào)碼。
如果我們想知道Kaitlin Rasmussen的主管是誰(shuí),我們將必須獲取存儲(chǔ)在該主管字段中的數(shù)字,并在該員工ID字段中的完全相同的表中查找它,以便知道Charity Hendricks是主管。
此表不是關(guān)系數(shù)據(jù)庫(kù)的理想結(jié)構(gòu),因?yàn)樗皇且?guī)范化的。
如果我們有一個(gè)情況,我們想創(chuàng)建一個(gè)查詢,只列出員工名稱旁邊的主管名稱,沒(méi)有一個(gè)簡(jiǎn)單的方法,我們可以查詢,除非我們創(chuàng)建一個(gè)自連接。
要查看自連接,請(qǐng)創(chuàng)建包含以下字段的表并輸入一些數(shù)據(jù)。
在這里,我們要再次創(chuàng)建一個(gè)列表,其中包含員工的名字,然后是主管的名字。讓我們從查詢?cè)O(shè)計(jì)視圖創(chuàng)建一個(gè)查詢。
現(xiàn)在,添加tblEmployees表。
關(guān)閉此對(duì)話框。
現(xiàn)在,為我們的員工添加名字和姓氏。
我們現(xiàn)在需要一種方法來(lái)創(chuàng)建此表與其自身之間的關(guān)系。為此,我們需要打開(kāi)顯示表對(duì)話框,并再次添加tblEmployees。
我們?cè)诖瞬樵円晥D中創(chuàng)建了同一個(gè)表的另一個(gè)副本?,F(xiàn)在,我們需要?jiǎng)?chuàng)建自連接。為此,單擊tblEmployees表中的Supervisor并按住鼠標(biāo)按鈕,并將其放在該復(fù)制表中的EmployeeID上面 - tblEmployees_1。然后,從該復(fù)制的表中添加名字和姓氏。
現(xiàn)在讓我們來(lái)運(yùn)行查詢,您將看到以下結(jié)果。
它顯示員工的名稱旁邊的主管的名稱。而且,這是如何在Microsoft Access中創(chuàng)建自連接。
更多建議: