999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Visual FoxPro多表視圖或查詢中聯接條件的設置

2013-04-29 00:00:00楊春波
計算機時代 2013年2期

摘 要: Visual FoxPro中為建立多表視圖或查詢進行聯接條件設置時,在向導和設計器的使用中需要特別注意一些問題,否則聯接結果很可能是不正確的。為此,以不同的實例分析了在向導和設計器中設置多表聯接條件過程中可能出現的錯誤,并分析歸納了最簡潔有效的正確設置方法。

關鍵詞: Visual FoxPro; 多表; 視圖; 查詢; 聯接條件

中圖分類號:G64 文獻標志碼:A 文章編號:1006-8228(2013)02-52-03

Settings of connection condition in Visual FoxPro multi-table graphs or query

Yang Chunbo

(Binzhou Medical University Health Management College, Yantai, Shandong 264003, China)

Abstract: Some special problems need to be paid attention when setting up connection conditions for multi-table graph and query in Visual FoxPro, otherwise the connection result is very possibly not correct. The errors that may arise during the procedure to set up in wizard and designer are analyzed by using three tables as example. The most concise and effective correct setting method is summarized.

Key words: Visual FoxPro; multi-table; graph; query; connection condition

0 引言

Visual Foxpro具有功能強大、可視性強、面向對象等特點。在利用Visual Foxpro進行多表查詢時,如聯接條件設置不當,則聯接結果會產生錯誤。本文對Visual Foxpro多表查詢條件的向導和設計器的設置進行了分析和研究,以找出產生問題的根由和解決問題的方法。

1 聯接條件設置基礎理論

在進行Visual Foxpro的多表查詢前需要設置表間的聯接條件,以三個表為例,三個表需要設置兩個聯接條件。假設A表和B表通過關鍵字段F來建立聯接,聯接條件表達式有兩種書寫格式:A.F=B.F和B.F=A.F,這兩種書寫格式不僅在順序上存在差別,在實質含義上也是不一樣的,位于等于號左邊的表是父表,位于等于號右邊的表是子表[1]。

2 實例操作

因為查詢與視圖都對應一條SELECT查詢語句,其建立步驟及注意事項完全相同,所以以視圖的建立為代表,以查詢“學生成績”為例,從學生信息表、課程信息表、成績信息表查詢包含學號、姓名、課程號、課程名、成績字段的數據信息,其中學生信息表與成績信息表通過“學號”字段建立聯接,課程信息表與成績信息表通過“課程號”字段建立聯接[2,3]。

2.1 向導中多表聯接的建立

在使用向導創建查詢時,在“步驟2-為表建立關系”中,如果已經設置了第1個聯接條件“xsda.學號=xscj.學號”,則第2個聯接條件不能設置為“kc.課程號=xscj.課程號”,如圖1所示;否則會出現“一個表不能同時為兩個父表的子表”的錯誤提示。這第2個聯接條件只有設為“xscj.課程號=kc.課程號”才能夠添加,但是按照該設置得到的結果肯定是錯誤的,返回檢查后會發現:向導竟然已經將剛才的兩個聯接條件調換了位置,導致結果錯誤。解決方法為:將已經調換位置的兩個聯接條件先行移去,再按照調換之前的情況重新添加一次,向導就不會再將正確的聯接條件調換位置而導致出錯。

在先設置第1個聯接條件為“kc.課程號=xscj.課程號”時也會出現類似情況,第2個聯接條件不能設置為“xsda.學號=xscj.學號”,否則會出現“一個表不能同時為兩個父表的子表”的錯誤提示。第2個聯接條件只有設為“xscj.學號=xsda.學號”才能夠添加,但是同樣出現以上問題,向導會自行將該正確設置的兩個聯接條件調換位置從而導致結果出錯,解決方法相同。而對于“一個表不能同時為兩個父表的子表”的錯誤提示,在設計器中可以設置一個表同時為兩個父表的子表,并且結果是正確的。

圖1 一個表不能同時為兩個父表的子表

如果已經設置了第1個聯接條件“xscj.學號=xsda.學號”,則第2個聯接條件不能設置為“xscj.課程號=kc.課程號”,如圖2所示,否則會出現“一個表不能同時為兩個子表的父表”的錯誤提示。第2個聯接條件只有設為“kc.課程號=xscj.課程號”才能夠添加,但這是一種錯誤的設置,而錯誤的設置向導就保持原有的錯誤情況,不會進行位置的調換,實際上,如果這兩個聯接條件調換位置,結果就是正確的[4]。

圖2 一個表不能同時為兩個子表的父表

2.2 設計器中多表聯接的建立

在設計器中,指定兩個字段分別給另外兩個表建立聯接條件,成績信息表為B表,其他兩個表分別為A表和C表,如學生信息表為A表,課程信息表為C表(亦可指定課程信息表為A表,學生信息表為C表,但是B表只能為成績信息表),則三表之間聯接條件的設置可有如下8種設置方式:

⑴ A=B B=C

⑵ A=B C=B

⑶ C=B A=B

⑷ C=B B=A

⑸ B=A B=C

⑹ B=A C=B

⑺ B=C A=B

⑻ B=C B=A

例如第⑴情況的聯接條件設置如圖3所示。

圖3 A=B B=C聯接條件設置方式

聯接條件可直接使用鼠標按指定順序拖放關聯字段來設置建立。

經過驗證,前4種設置方式可以得出正確的結果,而后4種情況得出的結果是錯誤的,其中⑸和⑹兩種情況出現C表課程信息表數據重復出現的錯誤,如圖4所示,⑺和⑻兩種情況出現A表學生信息表數據重復出現的錯誤,如圖5所示。

圖4 C表課程信息表數據重復出現

圖5 A表課程信息表數據重復出現

總結規律如下:

⑴ 凡是第1個聯接條件中B表作為子表的設置方式即⑴、⑵、⑶、⑷種情況結果均是正確的。

⑵ 凡是第1個聯接條件中B表作為父表的設置方式即⑸、⑹、⑺、⑻種情況結果均是錯誤的。

分析原因,上述8種設置方式對應的具體聯接設置代碼為:

⑴ xsda JOIN xscj JOIN kc ON Xscj.課程號=Kc.課程號ON Xsda.學號=xscj.學號

⑵ xsda JOIN xscj JOIN kc ON Kc.課程號=Xscj.課程號ON Xsda.學號=xscj.學號

⑶ kc JOIN xscj JOIN xsda ON Xsda.學號=Xscj.學號ON Kc.課程號=Xscj.課程號

⑷ kc JOIN xscj JOIN xsda ON Xscj.學號=Xsda.學號ON Kc.課程號=Xscj.課程號

⑸ xscj JOIN xsda JOIN kc ON Xscj.課程號=Kc.課程號ON Xscj.學號=Xsda.學號

⑹ xscj JOIN xsda JOIN kc ON Kc.課程號=Xscj.課程號ON Xscj.學號=Xsda.學號

⑺ xscj JOIN kc JOIN xsda ON Xsda.學號=Xscj.學號ON Xscj.課程號=Kc.課程號

⑻ xscj JOIN kc JOIN xsda ON Xscj.學號=Xsda.學號ON Xscj.課程號=Kc.課程號

可以看出⑸、⑹、⑺、⑻種情況出錯的原因在于:B表成績信息表應該同時與A表學生信息表和B表課程信息表建立聯接條件,但是在這種情況下只與其中的一個表建立了聯接條件,從而導致聯接條件對應不正確,出現錯誤的結果。而造成這種情況的原因取決于第1個聯接條件的設置,不受第2個聯接條件的影響,因此具體設置操作規律可簡化如下:第1個聯接條件中B表只能作為子表出現[5,6]。

3 結束語

向導中如果設置的聯接條件是正確的,向導就會調換兩個聯接條件的位置從而造成設置錯誤,而如果設置的聯接條件是錯誤的,則向導不會調換位置,維持原有錯誤設置。這應該是視圖和查詢向導中的一個很嚴重的BUG。設計器中多表聯接的設置主要牽涉到與其他兩個表建立聯接的B表是否在JOIN中與其他兩個表都建立了聯接,只有與其他兩個表都建立了JOIN聯接才能得出正確的結果。數據庫中表之間聯接條件尤其是多表之間的聯接條件很容易出現錯誤,只有深入分析研究,才能真正掌握其實質,從而避免在實際應用中出現錯誤。

參考文獻:

[1] 黃河,王賢志.SQL語言與關系數據庫[M].電子工業出版社,2011.

[2] 雷國華,胡西厚.數據庫技術與醫學應用[M].中國石油大學出版社,2012.

[3] 雷國華,胡西厚.醫學計算機技術與應用[M].人民衛生出版社,2009.

[4] 張高亮.Visual FoxPro程序設計[M].科學出版社,2012.

[5] 畢文才.Visual FoxPro編程方法與技巧[M].鄭州大學出版社,2008.

[6] 魏茂林.數據庫應用技術—Visual FoxPro 6.0(第4版)[M].電子工業出版社2012.

主站蜘蛛池模板: 亚洲热线99精品视频| 人妻91无码色偷偷色噜噜噜| 欧美激情一区二区三区成人| 亚洲欧洲日韩久久狠狠爱| 国产91无码福利在线| 亚洲无码视频喷水| 美女无遮挡拍拍拍免费视频| 日韩午夜福利在线观看| 中文无码日韩精品| 亚洲欧州色色免费AV| 久久综合九色综合97网| 国产成人综合亚洲网址| 青青热久麻豆精品视频在线观看| 久久黄色影院| 99视频只有精品| 久久综合国产乱子免费| 日韩国产综合精选| 国产乱子伦视频在线播放| 国产天天色| 亚洲成a人在线观看| 国产91小视频在线观看| 精品国产电影久久九九| 亚洲三级成人| a在线观看免费| 中文字幕无码电影| 国产精品欧美在线观看| 伊人AV天堂| 四虎在线观看视频高清无码 | 欧美日韩精品一区二区视频| 中文字幕人成乱码熟女免费| 老司机精品一区在线视频 | 色综合天天娱乐综合网| 亚洲免费三区| 538国产在线| 亚洲国产精品不卡在线| 日韩AV无码免费一二三区| 精品国产免费观看一区| 亚欧乱色视频网站大全| 一本色道久久88综合日韩精品| 亚洲国产精品无码久久一线| 亚洲综合色婷婷| 国产在线观看第二页| 中文字幕无码制服中字| 国产精品hd在线播放| A级全黄试看30分钟小视频| 黄色网址免费在线| 亚欧美国产综合| 精品久久综合1区2区3区激情| 久久黄色毛片| 亚洲人成色在线观看| 国产成人久视频免费| 伊人成色综合网| 欧美成人看片一区二区三区| 国产成人精品日本亚洲| 波多野结衣亚洲一区| 日韩在线视频网站| 在线播放真实国产乱子伦| 国产超薄肉色丝袜网站| 在线国产91| 亚洲bt欧美bt精品| 精品视频福利| 亚洲无码精品在线播放| 久久精品亚洲热综合一区二区| 天堂网亚洲系列亚洲系列| 国产手机在线小视频免费观看| 亚洲首页国产精品丝袜| 性激烈欧美三级在线播放| 亚洲国产成人无码AV在线影院L| 国产sm重味一区二区三区| 97se亚洲综合在线| 91精品aⅴ无码中文字字幕蜜桃| aaa国产一级毛片| 玩两个丰满老熟女久久网| 综合网久久| 国产成人禁片在线观看| 一级全黄毛片| 午夜欧美理论2019理论| 欧洲亚洲一区| 在线中文字幕日韩| 国产国产人成免费视频77777| 国产流白浆视频| 亚洲va在线∨a天堂va欧美va|