||
在論壇之前的發(fā)帖中,已就聯(lián)合查詢定義、基本概念以及如何利用查詢設(shè)計器進行聯(lián)合查詢設(shè)計,做過詳細介紹。在此不再重復(fù),本文著重就聯(lián)合查詢的實際運用,結(jié)合實例分步進行解析,讓大家對于聯(lián)合查詢本身,及聯(lián)合查詢的實際運用,有一個初步直觀而感性認識。
聯(lián)合查詢在數(shù)據(jù)庫中運用是較廣泛的,較為典型有:物品管理類、財務(wù)管理類等。
就拿物品管理來說,假設(shè)進、銷、存是分表進行設(shè)計的,數(shù)據(jù)分別存放在各獨立基表中,當(dāng)我們要獲得物品的分類明細賬數(shù)據(jù)時,就必須通過聯(lián)合查詢將進、銷、存三個基表的數(shù)據(jù)組合成為一個查詢。
根據(jù)本人在實際的運用中的經(jīng)驗總結(jié)歸納,我將聯(lián)合查詢大致分為三大類:兼容并收類、無中生有類、移花接木類。
一、聯(lián)合查詢之兼容并收
這是聯(lián)合查詢最為常見,也最基本的類型。這類聯(lián)合查詢是將一個以上表或查詢結(jié)果,進行重組而獲得新查詢結(jié)果。
要求用于構(gòu)建聯(lián)合查詢的表或查詢必須符合字段數(shù)必須相同,字段類型必須相容的兩個基本條件和要求。
在羅斯文數(shù)據(jù)庫實例中:“各城市的客戶和供應(yīng)商”查詢,就是這類查詢典型實例(見下圖)
羅斯文數(shù)據(jù)庫中聯(lián)合查詢實例 |
該實例的創(chuàng)建過程,大家可參看上文《查詢設(shè)計器設(shè)計聯(lián)合查詢》,本文不做講解。
二、聯(lián)合查詢之無中生有
這是聯(lián)合查詢又一種類型,是聯(lián)合查詢進階的必經(jīng)階段。這類聯(lián)合查詢是將單筆或N筆自定義數(shù)據(jù)與表或查詢組合而構(gòu)成的查詢。直白的說,就是將自定義數(shù)據(jù)與現(xiàn)成的表或查詢數(shù)據(jù)組合而構(gòu)成查詢。
案例:如通過聯(lián)合查詢?yōu)榻M合框數(shù)據(jù)源,添加一筆自定義“全部”作為默認第一筆數(shù)據(jù),用于查詢時返回所有數(shù)據(jù)。(見下圖)通過聯(lián)合查詢方式實現(xiàn)目的,要比我們在數(shù)據(jù)表中插入一筆“全部”數(shù)據(jù)要安全的多,因為這不會影響到原數(shù)據(jù)的完整性。
自定義數(shù)據(jù) |
實例操作步驟:
1、通過查詢設(shè)計器獲得資產(chǎn)編號數(shù)據(jù)查詢,實例名(組合框數(shù)據(jù)源一)
按圖添加各字段,輸入相應(yīng)表達式
2 |
設(shè)計器中添加 [ 個股比值及凈份紀錄表 ] |
1 |
說 明: 1、 個股名稱字段表達式的意思是:如名稱為空時,用字符串 NULL 表示,不為空則顯示個股名稱; 2、 這里用了兩個 [相關(guān)資產(chǎn)編號] 字段,第一字段對應(yīng)組合框綁定數(shù)據(jù),第二字段是組合框顯示數(shù)據(jù)。 |
打開查詢屬性窗口,唯一值屬性選擇:是
3 |
4 |
將查詢命名保存,本實例命名為:“組合框數(shù)據(jù)一” |
2、通過查詢設(shè)計器自定義數(shù)據(jù)查詢,實例名(組合框數(shù)據(jù)源二)
按圖添加各字段自定義值
2 |
說 明: 1、 雖為定義數(shù)據(jù),但還是必需在查詢設(shè)計器中添加 [個股比值及凈份紀錄表] ,否則進行聯(lián)合查詢設(shè)計時報錯; 2、 第一個字段中的 * 星號是組合框綁定字段,用于查詢?nèi)啃畔r指定值,這也是為什么前一個查詢需要兩個資產(chǎn)編號字段的原因 |
3 |
將查詢命名保存,本實例命名為:“組合框數(shù)據(jù)二” |
3、通過查詢SQL設(shè)計器將前面兩個查詢組合成聯(lián)合查詢,實例名(組合框數(shù)據(jù)結(jié)果)
1 |
設(shè)計器中通過 UNION 將前面兩個查詢聯(lián)合起來 |
說 明: 1、 關(guān)鍵聯(lián)接符 UNION 不能加 ALL ,否則自定義數(shù)據(jù)會出重復(fù)值; 2、 聯(lián)合查詢命名存盤后,可以直接成為組合框數(shù)據(jù)源。組合框具體設(shè)置參看實例。 |
三、聯(lián)合查詢之移花接木:
這是聯(lián)合查詢中相對復(fù)雜的類型。這類聯(lián)合查詢是前兩類聯(lián)合查詢方式的綜合類型,并在此基礎(chǔ)上重新演生而構(gòu)成全新的查詢結(jié)果。大家可以實踐摸索。
案例:該實例數(shù)據(jù)中,某個交易日中,認購與認沽數(shù)據(jù)成對,但有時認沽沒有數(shù)據(jù),使認購與認沽數(shù)據(jù)沒有兩兩相對,不便于對照。為此我們通過巧接的方式補齊認沽數(shù)據(jù),數(shù)據(jù)值為 “0” 。
巧接并補齊的數(shù)據(jù) |
實例操作步驟:
1、按圖先建立個第一個聯(lián)合查詢數(shù)據(jù)源:實例名(分組查詢一)
按圖添加各字段
2 |
設(shè)計器中添加 [ 個股比值及凈份紀錄表 ] |
1 |
2、按圖先建立個第二個聯(lián)合查詢數(shù)據(jù)源:實例名(分組查詢二)
按圖添加各字段,及表達式
2 |
設(shè)計器中添加 [ 個股比值及凈份紀錄表 ] |
1 |
說 明: 1、 [ 表達式1:0 ] 為自定義補齊值,沒加“”,表示非字符串值,以便下一步重組時計算; 2、 認購認沽字段為篩選字段,不顯示在查詢中,因此將鉤選去掉; 3、 認購認沽字段之所以用“認購”為查詢條件,因為認購數(shù)據(jù)中資產(chǎn)編號較完整,也為過濾去除“認沽”數(shù)據(jù),避免資產(chǎn)編號數(shù)據(jù)重復(fù)。 |
3、按圖將前第二個查詢組合構(gòu)成聯(lián)合查詢:實例名(分組查詢?nèi)?/SPAN>
1 |
在SQL設(shè)計器中通過 UNION 將前面兩個查詢組合起來
查看聯(lián)合查詢結(jié)果,發(fā)現(xiàn)有些資編號,如:資產(chǎn)編號為1就出現(xiàn)兩筆認沽數(shù)據(jù),這是因為有的資產(chǎn)編號之前有數(shù)據(jù)存在,加上我們自定義的數(shù)據(jù),因此出現(xiàn)認沽數(shù)據(jù)重復(fù)的情況出象。(見下圖)
4、按圖整理聯(lián)合查詢結(jié)果,實例名(分組查詢結(jié)果)
2 |
設(shè)計器中添加 [ 分組查詢?nèi)?/SPAN> ] |
1 |
按圖添加各字段,及表達式,分組計算,并按交易日排序
查詢結(jié)果命名保存,本實例命名為:“分組查詢結(jié)果”
3 |
以上是本人在ACCESS使用中,對聯(lián)合查詢的一點點經(jīng)驗的總結(jié)歸納,寫本文的目的,一是為便于自己總結(jié)提高,二是與初學(xué)者共同分享。由于本人認知有限且筆拙,不免有錯漏這處,希望各位高人斧正。
|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )
GMT+8, 2024-10-23 10:30 , Processed in 0.064905 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.