在查詢中使用多重值欄位

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

在 Microsoft Office Access 2007 中,您可以建立包含多重值的欄位,例如已指定議題的人員清單。在某些情況下,建議使用多重值欄位,例如當使用 Office Access 2007 處理 Windows SharePoint Services 3.0 清單中儲存的資訊,且該清單包含的欄位使用 Windows SharePoint Services 3.0 中所提供的一種多重值欄位類型時。

本文討論多重值欄位及如何在查詢中使用它們。

本文內容

什麼是多重值的欄位?

介紹查詢

在查詢中顯示多重值的欄位

顯示多重值欄位中的個別值

了解繫結的值及顯示值查閱欄位

如何在查詢中顯示的繫結的值

多重值欄位中輸入簡單的查詢準則

搜尋多重值欄位中的多個值

了解包括的影響。在欄位清單中的值欄位

計算、 群組和使用其他彙總函數

多重值欄位中使用新增查詢

多重值欄位中使用更新查詢

多重值欄位中使用刪除查詢

頁面頂端

何謂多重值欄位?

假設有某個工作要指定給一個員工或承包商,但是又決定要將其指定給多個員工,則可以使用 Office Access 2007 建立一個多重值欄位,該欄位即可讓您從清單中選取人員。

多重值欄位

按一下下拉式方塊時,核取方塊便會顯示為已選取狀態,表示您的選擇。您可以核取或清除清單中的項目,然後按一下 [確定] 送出選擇。

多重值欄位下拉式方塊

所選取的人員會儲存在多重值欄位中,並以逗號 (依預設) 分隔的方式顯示。

以逗號分隔值的多重值欄位

設計多重值欄位的目的是要輕鬆地支援某些實例,讓您可以在其中進行選取並儲存多項選擇,而不必建立進階資料庫設計。由於 SharePoint 清單也支援多重值欄位,因此這種欄位對於與 Windows SharePoint Services 的整合而言也很重要。

您可能很想知道為何 Office Access 2007 允許在一個欄位中儲存多個值,而其他多數相關資料庫管理系統卻不允許。其原因在於 Office Access 2007 中的資料庫引擎並不會將這些值真正儲存在單一欄位中。雖然您看到及使用的欄位似乎是單一欄位,但是實際上,這些值是在隱藏的系統資料表中獨立儲存並進行管理的。這由 Access 資料庫引擎來處理,它會自動分隔資料並將其重新組合以讓這些值顯示在一個欄位中。

從技術上來講,Access 多重值欄位會以多對多關聯性為模型。例如,若要在某個事件資料表中,將每個事件的責任指定給一個或多個員工。假設建立名為 "AssignedTo" 的多重值欄位,以將事件指定到員工。事件與員工之間的關聯性即為多對多。也就是說,可以將多個員工指定到任意一個事件,也可以將任意一個員工指定給多個事件。

頁面頂端

查詢簡介

我們會需要資料庫的主要目的就是希望能夠提供下列資訊:「我們賣得最好的產品是什麼?最大的客戶是誰?有哪些產品沒有達到銷售目標?」如果您需要一個設計精良的資料庫,那麼這些都是應該提出的合理問題。如果希望 Access 資料庫能夠為您解決問題,您需要建立查詢並輸入所需的條件。查詢中的資料可以來自一個或多個資料表。在 Access 擷取可回答這些問題的資料後,您可以檢視及分析這些資料。一旦建立查詢,您就可以將其做為表單、報表、圖表或甚至是其他查詢的基礎。

Office Access 2007 可讓您在某些查詢中以特定方式使用多重值欄位。您可以在查詢中顯示多重值欄位,在查詢中顯示多重值欄位的個別值,以及使用多重值欄位來執行某些選取的彙總作業及巨集指令查詢。

頁面頂端

在查詢中顯示多重值欄位

在查詢中顯示多重值欄位時,必須決定是要顯示以逗點分隔之所有值的完整多重值欄位,還是要分別顯示每個值的資料列。例如,假設 [Issues] 資料表中包含 [AssignedTo] 欄位,您要使用該欄位將議題指定給人員,則可以使用下列程序建構包含 [AssignedTo] 欄位的查詢。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢設計格線。在此範例中,請將 [Title] 欄位及名為 [AssignedTo] 的多重值欄位拖曳至查詢格線。

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

查詢結果會與下列圖形類似,第一欄顯示議題標題,第二欄顯示多重值欄位: 

顯示 [Title] 及 [AssignedTo] 欄位的查詢結果

使用 [設計檢視] 建立查詢時,Access 會自動產生對應的 SQL (結構化查詢語言) 陳述式。SQL 是 Access 使用的查詢語言。您可以使用下列程序來切換至 [SQL 檢視],以便查看 SQL 陳述式。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

頁面頂端

顯示多重值欄位中的個別值

假設您要查看展開的 (有時稱為平面式) [AssignedTo] 多重值欄位,讓每個名稱或 [AssignedTo] 值都顯示在單獨的資料列中。那麼,必須將字串 ".Value" 附加至 [欄位] 資料列中的 "AssignedTo",從而指定 Value 屬性,如下列查詢格線中所示:

顯示 Title 及 AssignedTo.Value 的查詢格線

如果指定 [欄位] 資料列中的 AssignedTo,則執行查詢時,Access 會將多重值欄位中的所有值都顯示在一個資料列中。不過,使用 Value 屬性 (如 AssignedTo.Value) 時,Access 會以展開的形式顯示多重值欄位,讓每個值都顯示在單獨的資料列中。您可以使用下列程序來建立查詢以顯示個別值。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將要使用的欄位 (在此範例中是名為 "AssignedTo.Value" 的多重值欄位) 拖曳至查詢格線。

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

顯示 Title 及個別 AssignedTo 值的查詢結果

當您使用 [設計檢視] 來建立查詢時,Access 就會自動產生對應的 SQL (結構化查詢語言) 陳述式。SQL 是 Access 使用的查詢語言。您可以使用下列程序來切換至 SQL 檢視,以便查看 SQL 陳述式。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

頁面頂端

了解查閱欄位中的繫結值及顯示值

多重值欄位是查閱欄位。查閱欄位是資料表中的一個欄位,這個欄位會從其他資料表或查詢,或從值清單擷取值。Access 支援數個版本的單一值查閱欄位,而多重值查閱欄位是 Office Access 2007 的新增功能。查閱欄位的目的是顯示諸如名稱等更有意義的內容,以取代識別碼編號等的數字 (或其他外部索引鍵值)。例如,Access 可以顯示連絡人名稱來取代連絡人編號。連絡人編號即為繫結值。在來源資料表或查詢中會自動查閱該值,並取代為連絡人名稱。連絡人名稱即是顯示值。

與具有顯示值及繫結值的單一值查閱欄位相似,多重值查閱欄位的顯示值會顯示在使用者介面中,而繫結值則儲存在資料表中。針對多重值欄位中的每個項目,都會根據繫結值來「查閱」顯示值。

這表示 Access 顯示的查閱顯示值通常會與欄位中儲存的繫結值不同。例如,在使用 [AssignedTo] 欄位的上述範例中,來自 [連絡人的其他資訊] 查詢的一組員工識別碼值儲存在 [AssignedTo] 欄位中。建立多重值欄位時,選取 [連絡人的其他資訊] 查詢做為 [資料列來源]。

這些員工識別碼是繫結值。不過,因為 [AssignedTo] 欄位是查閱欄位,所以 Access 會在查詢結果中顯示一組查閱值 (在此情況下為連絡人名稱)。連絡人名稱是顯示值。 

含有顯示值的資料工作表與含有繫結值的資料工作表

1. 顯示值。

2. 繫結值。

您可以在 [設計檢視] 中查看多重值欄位的 [查閱] 屬性,方法如下:

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

  3. 在 [功能窗格] 中,以滑鼠右鍵按一下儲存多重值欄位的資料表。

  4. 按一下 [設計檢視]

  5. 按一下多重值欄位 (例如,按一下 [AssignedTo])。

  6. 按一下 [欄位內容] 底下的 [查閱] 索引標籤。

多重值查閱欄位屬性

了解查閱欄位之顯示值及繫結值之間的差異很重要。根據預設,顯示值會自動顯示在資料工作表檢視中。不過,儲存以及在查詢條件中所使用的都是繫結值,而且,Access 預設與其他資料表進行結合所使用的也是繫結值。

頁面頂端

如何在查詢中顯示繫結值

根據預設,顯示值會自動顯示在資料工作表檢視中。建立查詢時,可以覆寫此行為,以便改為顯示繫結值。下列程序顯示您需要採取的步驟:

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢設計格線。在此範例中,請將 [Title] 欄位及名為 [AssignedTo.Value] 的多重值欄位拖曳至查詢格線。

  7. 按一下查詢格線中的 [AssignedTo.Value] 欄位,讓此欄位取得焦點。

  8. [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [屬性表]

  9. 在 [屬性表] 的 [查閱] 索引標籤上,選取 [顯示控制項] 屬性中的 [文字方塊]

在查詢設計中顯示控制項屬性

將 [顯示控制項] 屬性變更為 [文字方塊] 時,會停用一般查閱欄行為,以顯示繫結值,而非顯示值。

查詢結果中顯示的繫結值

頁面頂端

輸入多重值欄位的簡單查詢條件

假設您要查看指定給 "Kelly Rollin" 的議題。您可以在查詢格線的 [準則] 資料列中輸入查詢條件,但是輸入查閱欄位的準則時,必須輸入繫結值而不是顯示值。在此情況下,您可以判定 Kelly Rollin 的繫結值是 6。該值是針對 Kelly 所進行的 [連絡人的其他資訊] 查詢中相對應的主索引鍵值。

若要建立查詢以顯示指定給 Kelly 的議題:

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢格線。在此範例中,請將 [Title] 拖曳至格線中的第一欄。然後將 [AssignedTo] 拖曳至第二欄。

  7. 在查詢格線索引標籤的 [AssignedTo] 底下,於 [準則] 資料列內,輸入 6。請注意,您需要輸入繫結值,而不是顯示值。

    多重值欄位中含有準則的查詢格線

  8. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行] 來執行查詢。

執行查詢時,結果會顯示在 [資料工作表檢視] 中。請注意,查詢只會傳回出現 "Kelly Rollin" 的資料列。

AssignedTo 值包括 6 的查詢結果

當您使用 [設計檢視] 來建立查詢時,Access 就會自動產生對應的 SQL (結構化查詢語言) 陳述式。SQL 是 Access 使用的查詢語言。您可以使用下列程序來切換至 SQL 檢視,以便查看 SQL 陳述式。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

搜尋文字而非識別碼編號

如果您發現在搜尋值中輸入識別碼編號很麻煩,因此想要輸入名稱 "Kelly Rollin",該怎麼辦?若要如此,查詢結果中必須具有包含文字名稱的欄位。這樣您才可以在該欄位中搜尋 "Kelly Rollin"。

您無法使用 [AssignedTo.Value] 欄位,因為其繫結值是識別碼,所以您必須輸入識別碼才能夠對該欄位進行篩選。

在此範例中,連絡人名稱欄位並不存在於資料表中,而是存在於針對多重值 [AssignedTo] 欄位提供資料的來源查詢中。您可以將多重值欄位的來源資料表或查詢與包含該多重值欄位的資料表相結合,以在查詢結果中併入來源資料表或查詢中的欄位 (在此範例中為連絡人名稱)。然後,您可以搜尋該欄位,而不必搜尋多重值欄位。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 "Issues"),然後按一下 [新增]

  5. 按一下 [顯示資料表] 對話方塊中的 [查詢] 索引標籤,然後按一下做為多重值欄位來源的查詢 (在此範例中為 [連絡人的其他資訊]),再按一下 [新增]

  6. 按一下 [關閉]

  7. 將您要使用的欄位拖曳至查詢格線。在此範例中,請將 [Title] 從 [Issues] 資料表拖曳至格線中的第一欄。然後將 [連絡人名稱] 從 [連絡人的其他資訊] 查詢拖曳至第二欄,並清除 [顯示] 核取方塊。再將 [AssignedTo] 拖曳至第三欄。

  8. 如果在 [連絡人的其他資訊] 查詢的 [識別碼] 欄位與 [AssignedTo.Value] 欄位之間看不到如下所示的聯結線,請按一下 [連絡人的其他資訊] 查詢的 [識別碼] 欄位,然後將其拖曳至 [Issues] 資料表中的 [AssignedTo.Value] 欄位。

    聯結線隨即出現。

    如果看到任何其他聯結線,請移除它們。若要移除聯結線,請按一下以選取該聯結線,然後按下 Delete 鍵。

  9. 在查詢格線的 [連絡人名稱] 底下,於 [準則] 資料列中,輸入 "Kelly Rollin"

    AssignedTo 準則包含 "Kelly Rollin" 的查詢格線

  10. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

執行查詢時,結果會顯示在 [資料工作表檢視] 中。請注意,查詢結果只會顯示出現 "Kelly Rollin" 的資料列。此方法之所以能夠運作,是因為將來源資料表或查詢中的 [識別碼] 與 [AssignedTo.Value] 欄位相結合,會傳回多重值欄位中每個值的單獨資料列;而且每個資料列還包含具有完整名稱的 [連絡人名稱] 欄位。因為 [連絡人名稱] 是計算欄位而非查閱欄位,所以沒有繫結值及顯示值,而只有一個值,即連絡人名稱。因此,您可以提供要符合的文字,在此情況下為 "Kelly Rollin。" 

AssignedTo 包含 "Kelly Rollin" 的查詢結果

當您使用 [設計檢視] 來建立查詢時,Access 就會自動產生對應的 SQL (結構化查詢語言) 陳述式。SQL 是 Access 使用的查詢語言。您可以使用下列程序來切換至 SQL 檢視,以便查看 SQL 陳述式。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

頁面頂端

在多重值欄位中搜尋多個值

有時,您需要搜尋多個相符的值。假設您想要查看 [AssignedTo] 欄位值中包含 "Kelly Rollin" 及 "Lisa Miller" 的議題。Kelly Rollin 的繫結值是 6,而 Lisa Miller 的繫結值是 10。若要針對多重值欄位指定數個準則,您可以使用 AND 及 OR 運算子。

若要建立查詢,請使用下列程序。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 "Issues"),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢格線。在此範例中,請將 [Title] 拖曳至格線中的第一欄。然後將 [AssignedTo] 拖曳至第二欄。

  7. 在查詢方格中,在「 assignedto 」,在 [準則] 列中,輸入6 及 10

    顯示多重值欄位中 AND 用法的查詢

  8. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

執行查詢時,結果會顯示在 [資料工作表檢視] 中。

顯示多重值欄位中 AND 用法的查詢結果

該結果只顯示已同時指定 Kelly Rollin 及 Lisa Miller 的議題。使用 [設計檢視] 來建立查詢時,Access 會自動產生對應的 SQL (結構化查詢語言) 陳述式。SQL 是 Access 使用的查詢語言。您可以使用下列程序來切換至 SQL 檢視,以便查看 SQL 陳述式。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

使用 OR 運算子來取代 AND 運算子

假設您想要變更查詢,以列出出現 "Kelly Rollin" "Lisa Miller" 的資料列。您可以編輯 SQL 陳述式,以使用 OR 運算子來取代 AND 運算子。陳述式應該看起來如下:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

執行查詢時,結果會顯示在 [資料工作表檢視] 中。

在多重值欄位中使用 OR 運算子的查詢

該結果只顯示已指定 Kelly Rollin 或 Lisa Miller 的議題。

頁面頂端

了解在欄位清單中併入 [.Value] 欄位的影響

很重要的是要了解在查詢的輸出欄清單 (SELECT 清單) 中併入 [.Value] 欄位的影響。處理查詢時,第一步是產生不受 WHERE 子句或篩選影響的結果集,然後將篩選套用至該初始集。因此,有效的方法是首先考慮產生該結果集,然後再藉由 WHERE 子句中的篩選來減少該結果集。例如,可以試試下面的範例:

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

篩選前的初始結果集可能如下所示:

Title

AssignedTo

Issue 1

David Hamilton、Eva Valverde

Issue 2

Kathleen Gail Jensen、Kelly Rollin、Susan Burk、Lisa Miller

Issue 3

Jesper Aaberg、Kelly Rollin、Eva Valverde、Tom Michaels

Issue 4

Wei Yu、Lisa Miller

Issue 5

David Hamilton、Kathleen Gail Jensen

Issue 6

Sanjay Jacob、Kelly Rollin

Issue 7

Jesper Aaberg、Susan Burk

Issue 8

David Hamilton

Issue 9

Kelly Rollin、Lisa Miller

Issue 10

Eva Valverde、Tom Michaels

然後,篩選步驟會在初始結果集上運作,並選取不包含 David Hamilton (其識別碼為 3) 的資料列:

Title

AssignedTo

Issue 2

Kathleen Gail Jensen、Kelly Rollin、Susan Burk、Lisa Miller

Issue 3

Jesper Aaberg、Kelly Rollin、Eva Valverde、Tom Michaels

Issue 4

Wei Yu、Lisa Miller

Issue 6

Sanjay Jacob、Kelly Rollin

Issue 7

Jesper Aaberg、Susan Burk

Issue 9

Kelly Rollin、Lisa Miller

Issue 10

Eva Valverde、Tom Michaels

現在,請試試第二個範例,其在欄位清單中包括 [.Value] 欄位。請注意在篩選之前,存在的 [.Value] 欄位會如何變更初始結果集: 

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

篩選前的初始結果集如下所示:

Title

AssignedTo.Value

Issue 1

David Hamilton

Issue 1

Eva Valverde

Issue 2

Kathleen Gail Jensen

Issue 2

Kelly Rollin

Issue 2

Lisa Miller

Issue 2

Susan Burk

Issue 3

Eva Valverde

Issue 3

Jesper Aaberg

Issue 3

Kelly Rollin

Issue 3

Tom Michaels

Issue 4

Lisa Miller

Issue 4

Wei Yu

Issue 5

David Hamilton

Issue 5

Kathleen Gail Jensen

Issue 6

Kelly Rollin

Issue 6

Sanjay Jacob

Issue 7

Jesper Aaberg

Issue 7

Susan Burk

Issue 8

David Hamilton

Issue 9

Kelly Rollin

Issue 9

Lisa Miller

Issue 10

Tom Michaels

Issue 10

Eva Valverde

現在,篩選步驟會在初始結果集上運作,並僅選取不包含 David Hamilton (其識別碼為 3) 的資料列:

Title

AssignedTo.Value

Issue 1

Eva Valverde

Issue 2

Kathleen Gail Jensen

Issue 2

Kelly Rollin

Issue 2

Lisa Miller

Issue 2

Susan Burk

Issue 3

Eva Valverde

Issue 3

Jesper Aaberg

Issue 3

Kelly Rollin

Issue 3

Tom Michaels

Issue 4

Lisa Miller

Issue 4

Wei Yu

Issue 5

Kathleen Gail Jensen

Issue 6

Kelly Rollin

Issue 6

Sanjay Jacob

Issue 7

Jesper Aaberg

Issue 7

Susan Burk

Issue 9

Kelly Rollin

Issue 9

Lisa Miller

Issue 10

Tom Michaels

Issue 10

Eva Valverde

在套用篩選前後顯現結果集,應該會讓您更輕鬆地正確預期查詢結果。

頁面頂端

計數、分組及使用其他彙總函數

您可能想要針對儲存於多重值欄位中的一組數值執行計算。例如,為每個人指定多少個議題?為每個議題指定多少個人?您可以在 [合計] 查詢中使用彙總函數,以執行這種類型的計算。

彙總函數會針對一組值執行計算,然後傳回單一值。例如,SumCountAvg 是三個用於計算合計的彙總函數。您可以針對所有記錄或一組記錄來計算合計。若要依群組進行合計,必須在查詢格線中選取要分組的一個或多個欄位。

下列程序顯示如何建立查詢,以計算指定給每個人的議題數。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢格線。在此範例中,將 [AssignedTo.Value] 拖曳至格線中的第一欄。然後將 [Title] 拖曳至第二欄。

  7. [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [合計]

    [合計] 資料列即會顯示在查詢格線中。根據預設,[群組依據] 會顯示在查詢中每個欄位底下的 [合計] 儲存格中。

  8. 在查詢格線的 [Title] 底下,按一下 [合計] 資料列中的 [計數]

  9. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

設計查詢時,要指定用於分組的欄位,以及用於合計 (計算) 的欄位。使用此範例時,[AssignedTo.Value] 是用於分組的欄位,而 [Title] 是用於計算合計的欄位。如果是要用於分組的欄位,請選取 [合計] 資料列中的 [群組依據]。如果是要用於計算合計的欄位,請選取計算類型 (例如 SumAvg)。請注意,使用多重值欄位進行分組時,必須使用 [.Value] 欄位。在此範例中,不能使用 [AssignedTo] 欄位進行分組,而必須使用 [AssignedTo.Value] 欄位。使用多重值欄位進行排序時,也必須使用 [.Value] 欄位。 

附註: 使用多重值欄位進行分組時,必須使用 [.Value] 欄位。使用多重值欄位進行排序時,也必須使用 [.Value] 欄位。

執行查詢時,結果會顯示在 [資料工作表檢視] 中。

計算指定給每個人之議題數的查詢

若要檢視這個查詢的 SQL 陳述式,請按照下列步驟切換至 [SQL 檢視]。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

假設您要知道指定給每個議題的人數,則可以依 [Title] 分組,並選取 [計數] 以計算多重值欄位。若要建立查詢,請使用下列程序。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. [顯示資料表] 對話方塊中,按一下包含多重值欄位的資料表 (在此範例中為 [問題]),然後按一下 [新增]

  5. 按一下 [關閉]

  6. 將您要使用的欄位拖曳至查詢格線。在此範例中,將 [Title] 拖曳至格線中的第一欄。然後將 [AssignedTo] 拖曳至第二欄。

  7. [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [合計]

    [合計] 資料列會顯示在查詢格線中。根據預設,[群組依據] 會出現在查詢中 [Title] 欄位下的 [合計] 儲存格中。[運算式] 則會依預設出現在 [AssignedTo] 欄位下的 [合計] 儲存格中。這是因為您無法對多重值欄位執行 [群組依據] 作業。您僅可對多重值 [.Value] 欄位執行此作業。 

  8. 在查詢格線的 [AssignedTo] 底下,按一下 [合計] 資料列中的 [計數]

  9. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

執行查詢時,結果會顯示在 [資料工作表檢視] 中。

顯示每個議題人數的查詢結果

若要檢視這個查詢的 SQL 陳述式,請按照下列步驟切換至 [SQL 檢視]。

  1. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  2. 按一下 [SQL 檢視]

SQL 陳述式看起來如下:

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

附註: 在此 SQL SELECT 陳述式中,無論是使用 Count(Issues.AssignedTo) 或是使用 Count(Issues.AssignedTo.Value),結果都是相同的。 

頁面頂端

在多重值欄位中使用新增查詢

您可以使用 [插入] 查詢,在多重值欄位中插入單一值。例如,假設您要將 "Kelly Rollin" 新增至議題的 [AssignedTo] 多重值欄位。首先要判斷議題及 Kelly 連絡人記錄的主索引鍵值。假設議題的值是 10,而 Kelly 的值是 6。

下列程序會示範如何建立查詢。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

    Access 功能區圖像

  4. 按一下 [顯示資料表] 對話方塊中的 [關閉]

  5. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  6. 按一下 [SQL 檢視]

  7. 在 [SQL 檢視] 中,輸入下列 SQL 陳述式:

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

    Access 可能會要求您確認是否要附加所選取的資料列。按一下 [是] 插入資料列,或按一下 [否] 取消。

Kelly 現在會在該議題的 [AssignedTo] 欄位中列出。這是在多重值欄位中,[插入] 查詢的唯一形式。

附註: [新增] 查詢可用於將記錄從一個資料表新增至其他現有的資料表。在 Office Access 2007 中,您不能使用新增查詢的情況是,該查詢參照的資料表包含多重值欄位。例如,下列查詢無效:

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

頁面頂端

在多重值欄位中使用更新查詢

您可以使用 [更新] 查詢,變更現有記錄中的值。使用 [更新] 查詢來更新包含多重值欄位的資料表時,可以將多重值欄位中的單一值變更為其他值。假設要更新特定議題的 [AssignedTo] 多重值欄位,例如以 "Lisa Miller" 取代 "Kelly Rollin"。首先要判斷議題及 Kelly 與 Lisa 連絡人記錄的主索引鍵值。假設 8 是議題的值,6 是 Kelly 的值,而 10 是 Lisa 的值。 

下列程序會示範如何建立查詢。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

  4. 按一下 [顯示資料表] 對話方塊中的 [關閉]

  5. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  6. 按一下 [SQL 檢視]

  7. 在 [SQL 檢視] 中,輸入下列 SQL 陳述式:

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    附註: 

    • 您應該一直包含 WHERE 子句,用來僅識別要更新的記錄。否則,會更新到不想變更的記錄。不包含 WHERE 子句的 [更新] 查詢會變更資料表中的每個資料列。

    • 您可以指定要變更的一個值。

  8. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

    Access 可能會要求您確認是否要更新記錄。按一下 [是] 更新資料列,或按一下 [否] 取消。

在該議題的 [AssignedTo] 欄位中,現在會列出 Lisa Miller 來代替 Kelly Rollin。

頁面頂端

在多重值欄位中使用刪除查詢

您可以使用 [刪除] 查詢來移除資料表的記錄。使用包含多重值欄位的資料表時,可以使用刪除查詢來刪除多重值欄位中包含特定值的記錄,或從資料表所有記錄中的多重值欄位,刪除特定值。

假設您要從資料表的 [AssignedTo] 欄位移除 "Kelly Rollin",則可以使用下列程序來建立查詢。

  1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

  2. [開啟] 對話方塊中,選取並開啟資料庫。

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

  4. 按一下 [顯示資料表] 對話方塊中的 [關閉]

  5. [設計] 索引標籤上的 [結果] 群組中,按一下 [檢視] 底下的箭號,即可顯示 [檢視] 功能表。

  6. 按一下 [SQL 檢視]

  7. 在 [SQL 檢視] 中,輸入下列 SQL 陳述式:

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. [設計] 索引標籤上,按一下 [結果] 群組中的 [執行],以執行查詢。

    Access 可能會要求您確認是否要刪除記錄。按一下 [是] 刪除記錄,或按一下 [否] 取消。

下列範例查詢不會刪除 [Issues] 資料表的任何記錄。它會從顯示值之每筆記錄的 [AssignedTo] 多重值欄位中刪除值。如果您要刪除 [Issues] 資料表的記錄,請不要遵循 SQL 陳述式中的 DELETE 子句指定欄位。例如,若要刪除在已指定議題之人員清單中列出 "Kelly Rollin" 的所有議題,請輸入下列 SQL 陳述式:

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

附註: 使用 [刪除] 查詢刪除記錄時要特別小心,因為您無法復原刪除掉的記錄。

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

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

這項資訊有幫助嗎?

感謝您的意見反應!

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

×