注冊 登錄
Office中國論壇/Access中國論壇 返回首頁

aksufyy的個人空間 http://ctxi.cn/?76836 [收藏] [復(fù)制] [分享] [RSS]

日志

聯(lián)合查詢實戰(zhàn)講解

已有 1350 次閱讀2012-2-6 12:53 |個人分類:學(xué)習(xí)| 聯(lián)合

在論壇之前的發(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、  [ 表達式10 ] 為自定義補齊值,沒加“”,表示非字符串值,以便下一步重組時計算;

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é)者共同分享。由于本人認知有限且筆拙,不免有錯漏這處,希望各位高人斧正。

                    

評論 (0 個評論)

facelist doodle 涂鴉板

您需要登錄后才可以評論 登錄 | 注冊

QQ|站長郵箱|小黑屋|手機版|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.

返回頂部