使用聯集查詢合併多個查詢產生單一結果

附註:  我們想要以您的語言,用最快的速度為您提供最新的說明內容。 本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。 此為 英文文章 出處,以供參考。

有時您可能要清單從一個資料表或查詢的記錄與一或多個資料表,以一組記錄-含兩個或多個資料表的所有記錄的清單。這是在 Access 中聯集查詢的目的。

有效率地瞭解聯集查詢,您應該先熟悉設計在 Access 中的基本選取查詢。若要瞭解關於設計選取查詢的詳細資訊,請參閱建立簡單的選取查詢

附註: 本文中資訊是供 Access 桌面資料庫使用。您無法在 Access Web 資料庫或 Access Web App 中建立或使用聯集查詢。

學習使用聯集查詢範例

如果您永遠不會建立聯集查詢之前,您可能會發現實用至第一個研究一個作業範例北風 Access 範本中。您可以按一下 [檔案搜尋 Access 的 [取得使用] 頁面上的 [北風] 樣本範本 >新增,或者您可以直接下載複本從這個位置:北風範例範本

Access 便會開啟 [北風] 資料庫後,請關閉 [登入] 對話方塊表單的第一次出現,然後再展開 [功能窗格。按一下 [功能窗格的頂端,然後選取 [組織依其類型的所有資料庫物件的物件類型。接下來,展開 [查詢] 群組,您會看到稱為產品交易的查詢。

聯集查詢很容易區別查詢物件,因為他們有類似的兩個代表美國的設定兩個糾結圓形的特殊圖示:

在 Access 中的聯集查詢圖示的螢幕擷取畫面。

不同於一般選取和巨集指令查詢,在聯集查詢中,這表示圖形的查詢設計工具不會用來建立或編輯聯集查詢的存取不相關的資料表。如果您開啟聯集查詢,從 [功能窗格; 您會遇到此Access 開啟它,並在 [資料工作表檢視中顯示結果。在 [常用] 索引標籤上的 [檢視] 命令,您會發現當您使用聯集查詢時,無法使用[設計] 檢視。使用聯集查詢時,您僅可以切換資料工作表檢視SQL 檢視之間。

若要繼續您研究這個聯集查詢範例,請按一下 [常用] >檢視> 若要檢視其定義的 SQL 語法的SQL 檢視] 。在此圖中,我們已新增在 SQL 中的一些額外間距,讓您輕鬆地瞭解各部分組成聯集查詢。

視覺從 Northwind 範例 Access 範本聯集查詢在 SQL 檢視中的範例。

現在就讓我們研究此聯集查詢,從 [北風] 資料庫的詳細資料的 SQL 語法:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

第一個 SQL 陳述式的第三個部分都是基本上的兩個選取查詢。這些查詢擷取兩組不同的記錄。從 [產品訂單] 資料表和一個產品採購資料表的一個。

SQL 陳述式的第二部分是UNION關鍵字告訴存取此查詢會結合記錄這兩組。

SQL 陳述式的最後一部分會決定合併記錄順序使用的順序來陳述式。在此範例中,Access 會訂單的訂單日期] 欄位以遞減順序來記錄所有。

附註: 聯集查詢一律是唯讀的; 在 Access 中您無法變更資料工作表檢視中的任何值。

建立,結合選取查詢建立聯集查詢

雖然您可以直接在 SQL 檢視中撰寫的 SQL 語法,來建立聯集查詢,您可能會發現很容易建立選取查詢的組件中。您可以複製和貼合併的聯集查詢的 SQL 組件。

如果您想要略過閱讀步驟,請改為觀看範例,請參閱下一節,並觀看建立聯集查詢的範例

  1. 在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。

  2. [顯示資料表] 對話方塊中,按兩下包含您想要使用之欄位的資料表。資料表便會新增至查詢設計視窗。

  3. 關閉 [顯示資料表] 對話方塊。

  4. 在 [查詢設計] 視窗中,按兩下每個您想要包含的欄位。當您選取的欄位,請確定您在同一訂單中新增數相同的欄位,您新增的其他選取的查詢。特別資料類型的欄位,請注意,確保他們擁有相容的資料類型的欄位,您可以在結合的查詢中的同一個位置中。例如,如果您的第一個選取查詢有五個欄位,第一個包含日期/時間資料,請確定每個其他選取查詢的就結合也都有五個欄位,第一個包含日期/時間資料,等等。

  5. (選擇性) 欄位中加入準則欄位格線的 [準則] 列中輸入適當的運算式。

  6. 在您完成新增欄位及欄位準則後,您應該執行選取查詢並檢視輸出結果。在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

  7. 切換查詢至 [設計檢視]。

  8. 儲存選取查詢,並保持在開啟的狀態。

  9. 為您想要合併的每一個選取查詢重複相同的程序。

現在,您建立選取查詢,是將它們結合的時間。在此步驟中,您可以建立聯集查詢複製並貼上 SQL 陳述式。

  1. [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]

  2. 關閉 [顯示資料表] 對話方塊。

  3. 在 [設計] 索引標籤中 [查詢] 群組中,按一下 [聯集。Access 會隱藏 [查詢設計] 視窗中,並顯示 [SQL 檢視] 物件索引標籤。此時,[SQL 檢視物件索引標籤是空的。

  4. 按一下您想要在聯集查詢中合併的第一個選取查詢的索引標籤。

  5. 在 [常用] 索引標籤中按一下 [檢視] > [SQL 檢視]。

  6. 複製選取的查詢的 SQL 陳述式。按一下您開始之前建立聯集查詢的索引標籤。

  7. 將選取查詢的 SQL 陳述式貼上至聯集查詢的 [SQL 檢視] 物件索引標籤中。

  8. 刪除選取查詢 SQL 陳述式結尾的分號 (;)。

  9. 按下 Enter,將游標下移一行,然後在新的一行輸入 UNION。

  10. 按一下您想要在聯集查詢中合併的下一個選取查詢的索引標籤。

  11. 重複步驟 5 至 10,直到選取查詢的所有 SQL 陳述式都已複製貼上到聯集查詢的 [SQL 檢視] 視窗中。請勿刪除最後一個選取查詢的 SQL 陳述式後面的分號,也不要輸入任何項目。

  12. [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]

聯集查詢結果會出現在資料工作表檢視中。

觀看建立聯集查詢的範例

以下是您可以重新建立 [北風] 樣本資料庫中的範例。此聯集查詢會從 [客戶] 資料表的 [人員的名稱,然後將其組合的供應商] 資料表中的人員名稱。如果您想要遵循,使用上述步驟,在您複製的 [北風] 樣本資料庫中。

視覺建立聯集查詢中 [北風] 樣本 Access 範本的範例。

以下是步驟建立此範例中:

  1. 建立名為 [Query1 和 Query2 與 [客戶] 和 [產品資料表分別為資料來源的兩個選取查詢。使用名字和姓氏欄位和顯示的值。

  2. 建立名為 [Query3 與資料來源不開始新的查詢,然後按一下 [聯集] 命令在 [設計] 索引標籤上的,讓這個查詢至聯集查詢。

  3. 複製並貼到 Query3 的 Query1 和 Query2 SQL 陳述式。請務必移除額外的分號,並新增這是 UNION 關鍵字。然後,您可以檢查您在資料工作表檢視中的結果。

  4. 排序子句中新增至其中一個查詢,然後貼入 ORDER BY 陳述式聯集查詢 SQL 檢視]。請注意,Query3,聯集查詢,在順序就關於附加,第一次分號會移除,然後資料表名稱的欄位名稱。

  5. 結合和排序的名稱,例如聯集查詢的最後一個 SQL 如下:

    SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
    FROM Customers
    
    UNION
    
    SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
    FROM Suppliers
    
    ORDER BY [Last Name], [First Name];

如果您很習慣撰寫 SQL 語法,您可以肯定撰寫您自己的 SQL 陳述式聯集查詢直接將 SQL 檢視]。不過,您可能會發現對遵循複製並貼上 SQL,從其他查詢物件的方法有幫助。每個查詢可於此處使用簡單的選取查詢範例更複雜。它可以建立並仔細測試之前將其在聯集查詢中合併的每個查詢優點。如果聯集查詢無法執行,您可以調整每個查詢個別鍵,直到它成功,然後重新建立聯集查詢以正確的語法。

檢閱剩下的本文以瞭解更多秘訣和竅門使用聯集查詢的相關章節。

在範例中使用 [北風] 資料庫前一節,結合來自兩個資料表的資料。不過,您可以結合非常輕鬆地在聯集查詢中的三個或多個資料表。例如建置上面範例中,您可能要也在查詢輸出包含員工的名稱。您可以藉由新增第三個查詢先前的 SQL 陳述式,與其他像這樣 UNION 關鍵字合併完成工作:

SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT Employees.Company, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

當您在資料工作表檢視中檢視結果時,會列出所有員工使用範例的公司名稱、 可能不是非常實用。如果您希望該欄位表示人員是否內部的員工,從 [供應商,或從客戶,您可以包含固定值取代的公司名稱。以下是如何 SQL 如下所示:

SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT "Supplier" As Employment, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT "In-house" As Employment, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

以下是如何結果會出現在資料工作表檢視中。Access 會顯示這些五個範例記錄:

雇用年紀

姓氏

名字

內部

雅婷

內部

Giussani

莉華

供應商

Glasson

客戶

Goldschmidt

客戶

Gratacos Solsona

上述查詢可以進一步降低,因為 Access 只在聯集查詢中的第一個查詢從讀取輸出欄位的名稱。在這裡您會看到我們已移除第二個和第三個查詢] 區段中的輸出:

SELECT "Customer" As Employment, [Last Name], [First Name]
FROM Customers

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers

UNION

SELECT "In-house", [Last Name], [First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

在 Access 聯集查詢,排序一次只允許但每個查詢可以篩選個別。建立在前一節的聯集查詢,下列是每個藉由新增一個 WHERE 子句查詢範例我們已篩選的位置上。

SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers
WHERE [State/Province] = "UT"

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers
WHERE [Job Title] = "Sales Manager"

UNION

SELECT "In-house", Employees.[Last Name], Employees.[First Name]
FROM Employees
WHERE City = "Seattle"

ORDER BY [Last Name], [First Name];

切換至資料工作表檢視,您會看到類似以下結果:

雇用年紀

姓氏

名字

供應商

Andersen

伊莉莎白 a。

內部

雅婷

客戶

Hasselberg

Jonas

內部

安婕

供應商

Hernandez Echevarria

Amaya

客戶

Mortensen

Sven

供應商

黃冠

供應商

路意

內部

漢克

供應商

Weiler

Cornelia

內部

邦良

如果要進行聯集查詢非常不同,可能會遇到的輸出欄位必須將合併不同資料類型的資料的情況。如果是這樣,聯集查詢通常會傳回的結果為文字資料類型之後的資料類型可保留兩個文字數字。

若要瞭解如何運作,我們將使用產品的交易聯集查詢,在 [北風] 樣本資料庫中。 開啟該範例資料庫,然後開啟 [資料工作表檢視中的 [產品交易查詢。應該類似此輸出的最後一個十個記錄:

產品識別碼

訂單日期

公司名稱

交易

數量

77

2006/1/22

供應商 B

購買

60

80

2006/1/22

供應商 D

購買

75

81

2006/1/22

供應商 A

購買

125

81

2006/1/22

供應商 A

購買

200

7

2006/1/20

公司 D

Sale

10

51

2006/1/20

公司 D

Sale

10

80

2006/1/20

公司 D

Sale

10

34

2006/1/15

公司 AA

Sale

100

80

2006/1/15

公司 AA

Sale

30

假設您想數量欄位分割為兩個-購買和銷售。現在就讓我們也假設您想要的固定零,沒有值欄位的值。以下是此聯集查詢的 SQL 會呈現的樣子:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], 0 As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, 0 As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC; 

如果您切換至 [資料工作表] 檢視,您會看到現在會顯示如下所示的最後一個十個記錄:

產品識別碼

訂單日期

公司名稱

交易

購買

銷售

74

2006/1/22

供應商 B

購買

20

0

77

2006/1/22

供應商 B

購買

60

0

80

2006/1/22

供應商 D

購買

75

0

81

2006/1/22

供應商 A

購買

125

0

81

2006/1/22

供應商 A

購買

200

0

7

2006/1/20

公司 D

Sale

0

10

51

2006/1/20

公司 D

Sale

0

10

80

2006/1/20

公司 D

Sale

0

10

34

2006/1/15

公司 AA

Sale

0

100

80

2006/1/15

公司 AA

Sale

0

30

繼續進行此範例中,如果您想零為空白欄位?您可以修改 SQL 以顯示,而不是零,如下所示的 Null 關鍵字新增的任何動作:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

不過,當您可能會有觀察切換至 [資料工作表] 檢視,現在您有非預期的結果。在 [購買] 欄中,清除每個欄位:

產品識別碼

訂單日期

公司名稱

交易

購買

銷售

74

2006/1/22

供應商 B

購買

77

2006/1/22

供應商 B

購買

80

2006/1/22

供應商 D

購買

81

2006/1/22

供應商 A

購買

81

2006/1/22

供應商 A

購買

7

2006/1/20

公司 D

Sale

10

51

2006/1/20

公司 D

Sale

10

80

2006/1/20

公司 D

Sale

10

34

2006/1/15

公司 AA

Sale

100

80

2006/1/15

公司 AA

Sale

30

發生這種情況的原因是因為存取決定之第一個查詢欄位的資料類型。在此範例中,Null 不是數字。

因此,會發生什麼情況如果您嘗試,插入空白值的欄位空字串?此嘗試 SQL 可能看起來如下所示:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], "" As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, "" As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

當您切換至 [資料工作表] 檢視時,您會看到存取擷取購買值,但將其轉換為文字的值。您可以告訴這些都是文字值,因為它們是靠左對齊,在資料工作表檢視中。空字串中第一個查詢不這就是為什麼您看到下列結果是數字。您也會發現的銷售值也轉換成文字這是因為購買記錄包含一個空字串。

產品識別碼

訂單日期

公司名稱

交易

購買

銷售

74

2006/1/22

供應商 B

購買

20

77

2006/1/22

供應商 B

購買

60

80

2006/1/22

供應商 D

購買

75

81

2006/1/22

供應商 A

購買

125

81

2006/1/22

供應商 A

購買

200

7

2006/1/20

公司 D

Sale

10

51

2006/1/20

公司 D

Sale

10

80

2006/1/20

公司 D

Sale

10

34

2006/1/15

公司 AA

Sale

100

80

2006/1/15

公司 AA

Sale

30

您要如何解決拼圖?

解決方法是強制執行查詢預期欄位值是一個數字。可以完成的運算式:

IIf(False, 0, Null)

若要檢查,則為False,條件永遠不會為True,因此運算式一定會傳回空值,但 Access 仍評估這兩種輸出選項,並決定要數字或 Null,輸出。

以下是我們如何使用此運算式中使用範例:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], IIf(False, 0, Null) As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

請注意,不需要修改第二個查詢。

如果您切換至 [資料工作表] 檢視,您會立即看到我們想要的結果:

產品識別碼

訂單日期

公司名稱

交易

購買

銷售

74

2006/1/22

供應商 B

購買

20

77

2006/1/22

供應商 B

購買

60

80

2006/1/22

供應商 D

購買

75

81

2006/1/22

供應商 A

購買

125

81

2006/1/22

供應商 A

購買

200

7

2006/1/20

公司 D

Sale

10

51

2006/1/20

公司 D

Sale

10

80

2006/1/20

公司 D

Sale

10

34

2006/1/15

公司 AA

Sale

100

80

2006/1/15

公司 AA

Sale

30

另一個方法來達成相同的結果是在前面加上 [聯集查詢與另一個查詢中的查詢:

SELECT 
    0 As [Product ID], Date() As [Order Date], 
    "" As [Company Name], "" As [Transaction], 
    0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

為每個欄位中,Access 會傳回您所定義的資料型別固定的值。當然,您不想干擾結果,避免的做法是包含 False WHERE 子句,讓此查詢的輸出:

WHERE False

由於此永遠為 false,然後查詢不傳回任何項目,這是一個小的技巧。結合此現有的 SQL 陳述式,我們都會在已完成的陳述式,如下所示:

SELECT 
    0 As [Product ID], Date() As [Order Date], 
    "" As [Company Name], "" As [Transaction], 
    0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

UNION

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

附註: 合併的查詢在此範例中使用 [北風] 資料庫傳回 100 筆記錄,而兩個個別查詢傳回 58 和 43 針對總計 101 記錄的記錄。此差異的原因是因為兩筆記錄不是唯一的。若要瞭解如何使用 UNION ALL 解決這種情況,請參閱] 區段中,使用使用 UNION ALL 的聯集查詢中的不同記錄,請。

特殊聯集查詢的使用案例是結合的一組記錄有一筆記錄包含一個或多個欄位的總和。

以下是您可以為了說明如何以獲得總計,在聯集查詢中的 [北風] 樣本資料庫中建立的另一個範例。

  1. 建立檢視的同時提到 beers 購買新的簡單查詢 (產品識別碼] = [北風] 資料庫中的 34) 使用 SQL 語法如下:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
  2. 切換至 [資料工作表檢視,您應該會看到四個購買:

    收到日期

    數量

    2006/1/22

    100

    2006/1/22

    60

    2006/4/4

    50

    2006/4/5

    300

  3. 若要獲得總計,建立一個簡單的彙總查詢,使用下列 SQL:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
  4. 切換至 [資料工作表檢視,您應該會看到只一筆記錄:

    收到 MaxOfDate

    SumOfQuantity

    2006/4/5

    510

  5. 若要將總數量與記錄新增至購買記錄在聯集查詢合併這兩種查詢:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    UNION
    
    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
  6. 切換至資料工作表檢視,您應該會看到的每個後面加總數量記錄加總四個購買:

    收到日期

    數量

    2006/1/22

    60

    2006/1/22

    100

    2006/4/4

    50

    2006/4/5

    300

    2006/4/5

    510

說明將合計新增至聯集查詢的基本概念。您也可以在兩個查詢,例如 「 詳細資訊 」 和 「 總 「 要在視覺上的總記錄其他記錄中包含固定的值。您可以檢閱合併三個或多個資料表或查詢,在聯集查詢中的區段中使用固定的值。

在 Access 中預設的聯集查詢中僅包含唯一的記錄。但您想要包含的所有記錄的該怎麼辦?以下另一個範例可能很有用。

在上一節中,我們示範如何建立聯集查詢中的合計。修改 SQL 包含產品識別碼的聯集查詢 = 48:

SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION

SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Purchase Order Details].[Date Received];

切換至資料工作表檢視,您應該會看到有點誤導的結果:

收到日期

數量

2006/1/22

100

2006/1/22

200

當然一筆記錄不會傳回按兩次數量總計。

您會看到此結果是因為上一天的巧克力相同的數量按兩次-已售出購買訂單詳細資料表格中的記錄。以下是顯示在 [北風] 樣本資料庫中的兩筆記錄的簡易選取查詢結果:

購買訂單識別碼

產品

數量

100

北風貿易巧克力

100

頁,共 92

北風貿易巧克力

100

在聯集查詢中先前的說明,您可以看見 [購買訂單識別碼] 欄位未包含兩個欄位不進行兩個不同的記錄。

如果您想要包含的所有記錄時,使用 UNION ALL,而不是在您的 SQL 聯集。這大多可能會影響結果的排序,因此您可能會想要也包含 ORDER BY 子句來決定排序順序。以下是修改的 SQL 建置關閉前一個範例:

SELECT [Purchase Order Details].[Date Received], Null As [Total], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION ALL

SELECT Max([Date Received]), "Total" As [Total], Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Total];

切換至資料工作表檢視,您應該會看到除了總計以外的所有詳細資料為 [最後一筆記錄:

收到日期

總計

數量

2006/1/22

100

2006/1/22

100

2006/1/22

總計

200

要做為表單上下拉式方塊控制項的記錄來源是聯集查詢的常見使用方式。您可以使用下拉式方塊選取的值來篩選資料的表單。例如,篩選,他們的城市的員工記錄。

若要查看此可能會如何運作,以下是您可以建立以描繪出這種情況下的 [北風] 樣本資料庫中的另一個範例。

  1. 建立簡單的選取查詢,使用此 SQL 語法:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
  2. 切換至 [資料工作表檢視,您應該會看到下列結果:

    城市

    Filter

    Seattle

    Seattle

    貝利夫市

    貝利夫市

    雷蒙市

    雷蒙市

    柯克

    柯克

    Seattle

    Seattle

    雷蒙市

    雷蒙市

    Seattle

    Seattle

    雷蒙市

    雷蒙市

    Seattle

    Seattle

  3. 您查看這些結果可能不會看到的值。透過展開查詢,並將它轉換為聯集查詢中使用下列 SQL:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
  4. 切換至 [資料工作表檢視,您應該會看到下列結果:

    城市

    Filter

    < 所有 >

    *

    貝利夫市

    貝利夫市

    柯克

    柯克

    雷蒙市

    雷蒙市

    Seattle

    Seattle

    Access 就會執行九個記錄中,先前顯示固定的欄位的值,< 所有 > 聯集和 「 * 」。

    由於此 union 子句不含 UNION ALL,Access 會傳回只不同的記錄表示每個城市會傳回一次固定相同的值。

  5. 有已完成的聯集查詢,一次,以及其中一個選項的有效地選取所有的城市顯示每個城市名稱之後,您可以使用記錄來源為此查詢表單上的下拉式方塊。使用此特定的範例模型,您可以建立在表單中,將這個查詢設定為 [記錄來源與篩選] 資料行的 [欄寬] 屬性設定為 0 (零),以視覺化的方式,使其不然後繫結欄將屬性設為 1,表示索引的下拉式方塊控制項第二個資料行。在表單本身的 [篩選] 屬性中,您可以再新增中啟動使用的值的下拉式方塊控制項中選取的項目表單篩選下列程式碼:

    Me.Filter = "[City] Like '" & Me![FilterComboBoxName].Value & "'"
    Me.FilterOn = True

    表單的使用者可以篩選表單記錄的特定縣/市名稱或選取 < 所有 > 清單針對所有的城市的所有記錄。

頁面頂端

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×