一、聯合查詢的定義及相關基本概念
“聯合查詢”也有稱為“聯集查詢”,聯合查詢是通過UNION運算符將兩個或多個表、查詢結果或SELECT語句組合在一起,而構成的查詢。
ACCESS 查詢設計中“聯合查詢”對於初學者來說是相對較難的一種查詢方式,因為 ACCESS 沒有為我們提供建立聯合查詢的可視化向導,也不能直接用 Access 查詢設計器直觀的進行編輯設計,而必須自行在查詢的 SQL 視圖中編寫 SELECT 命令語句,對於 SQL 語句不是很熟悉或是初學者來說,有一定的難度。
SQL語法:
[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]
運算符:UNION
1、UNION是聯合查詢的關鍵運算符,正是通過UNION將兩個或多個查詢結果、表或SELECT語句合並起來;
2、在默認狀態,UNION運算符會從頭至尾檢查合並後的結果,並去除重復記錄,因此會減慢查詢的運行速度;
3、在UNION後面加上ALL,則不會遍歷檢查合並後的結果,從而提高查詢的運行速度,但這樣會直接返回所有記錄,而不會剔除其中重復記錄。
聯合查詢基本原則:
被合並的對象(查詢結果、表及SELECT語句)輸出的字段數必須相同;
字段類型無須相同的大小或數據類型,但數據類型須彼此相容;
最後一個SELECT語句才可以擁有ORDER BY參數,對查詢結果進行排序;
各個查詢結果或SELECT語句都可以使用GROUP BY與HAVING參數,但參數並不影響合並查詢結果。
二、用查詢設計器進行聯合查詢設計
前面我們說過不能直接用查詢設計器進行直觀聯合查詢設計,但這並不是說不能用查詢設計器來進行設計,我們可以用查詢設計器先得到各查詢結果的SELECT語句,再在SQL設計視圖中加入運算符UNION,這樣既可以檢視各查詢結果的正確性,同時也減少了我們書寫SELECT語句的工作量。下面我們就結合實例學習如何用查詢設計器進行聯合查詢的設計。
2-1查詢范例:
“羅斯文”數據庫中,業務往來單位的數據分為“客戶”數據與“供應商”數據,為了方便管理,我們可以通過“聯合查詢”將兩個表數據合並進行管理,建立“業務往來單位”查詢,並按所在城市、公司進行排序;
步驟一:獲得客戶查詢結果,並將查詢結果保存為“業務往來單位”查詢
步驟二:獲得供應商查詢結果SELECT語句
步驟三:在SQL編輯視圖中,組合兩個查詢的語句,完成聯合查詢