| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3149 人关注过本帖
标题:求组:表单修改时正常,运行时界面显示空白
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 30楼 lyxc34
SELECT是表與表橫向合併的指令,但你要的是縱向合併,等於追加成一個表(結構一樣才能做到)。這就是你查找指令的方向,假如找不到現成的指令,就自己做,這才是程序設計的精髓,什麽複雜功能都有現成指令,程序語言用來幹什麼!

VFP的地位,其實就如數據庫中的C,優勢在可以操縱到最細微的地方,不是籠統地一條高級指令完成操作。這是這種語言的優勢,也正是難學之處。很多人不瞭解這個特性,才會一開口就要指令,假如SQL語句做不到,就搖白旗舉手投降,那不如去學VB,不用學VFP。

[ 本帖最后由 TonyDeng 于 2011-7-8 13:29 编辑 ]
收到的鲜花
  • lyxc342011-07-08 14:43 送鲜花  1朵   附言:好文章

授人以渔,不授人以鱼。
2011-07-08 13:26
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
仔细查询了下select语句的语法,解决了。
SELECT * FROM 基本信息库!xsb10 UNION SELECT * FROM 基本信息库!xsb09 INTO CURSOR TEMP1
2011-07-08 13:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
沒錯,UNION子句可以,但你要謹慎,明白自己的意圖。UNION默認使用了DISTINCT機制(一旦用到這個,效率就會降低),它會消去兩個表之間重覆的記錄,這樣做是否眞的滿足自己的要求,是必須考慮清楚的。

授人以渔,不授人以鱼。
2011-07-08 13:44
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
回复 31楼 TonyDeng
受教。
我这里要求的比较简单,两个表结构是一样的,所以能用UNION子句。
如果是几个不同结构的表,那把几个表合成一个表的思路是不是就行不通了,到时候是不是得用程序设计一个表一个表的查询?
2011-07-08 13:44
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
回复 33楼 TonyDeng
嗯,这点我看到了,我要UNION的表都是不同记录的,谢谢提醒。如果不想消除相同记录在select后面加上ALL就可以了。

[ 本帖最后由 lyxc34 于 2011-7-8 13:47 编辑 ]
2011-07-08 13:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
SQL是按索引操作的,兩個表之間由關聯關鍵字確定如何合併,它也只管這個關鍵字,是共同字段就可以了。生成的結果表,字段數由SELECT中指定的字段列表決定,如果用了*,將是兩個表的字段和。

UNION的本質是多個SELECT語句結果的合併,得到什麽,由這些語句決定,最終結果是這些分結果的合集。在腦中想象,每個表是一張紙,分別把它們並湊在一起,就是結果。可以橫併,也可以豎併。

[ 本帖最后由 TonyDeng 于 2011-7-8 13:53 编辑 ]

授人以渔,不授人以鱼。
2011-07-08 13:50
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
表1               表2
学号 性别 年龄        学号  语文 数学 英语
1     男  10                  1    80  90  85
2         8                   2    70  80  75
                                3    90  70  60

表1和表2都只有学号这一个索引作为主索引,如果用
select * from 表1 union select * from 表2 into cursor TEMP

结果是不是应该为
TEMP
学号 性别 年龄 语文 数学 英语
1     男  10  80  90  85
2     女  8   70    80    75
3                 90    70    60

在上面的select后面加上all的话是不是应该就是
TEMP
学号 性别 年龄 语文 数学 英语
1     男  10  80  90  85
2     女  8   70    80    75
1     男  10  80  90  85
2     女  8   70    80    75
3                 90    70    60

是不是这个逻辑?
2011-07-08 14:07
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
all 与distinct到底是指两表中的字段名是否重复还是索引字段中的记录是否重复?
我想先靠脑子想一遍里面的逻辑,再去运行试验里面的结果。
2011-07-08 14:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
嗯,你這個方向對頭:先確定自己要怎樣的目的,再看程序怎麽實現,實際操作一下就知道了嘛。程序語言的功能,就是這樣測試出來的。

順便說一下:兩個數據庫的結構一樣,但記錄不同,在邏輯上這是無需分開爲兩個數據庫的。你打算靠數據庫文件名來分開不同的班、系,不是規範的做法。所以,SQL乾脆沒有現成的這種功能的語句,也是這個原因。事實上,這些數據應在同一個數據庫中,用篩選功能把需要的子表過濾出來,才是正路。
收到的鲜花
  • lyxc342011-07-08 14:43 送鲜花  1朵   附言:好文章

授人以渔,不授人以鱼。
2011-07-08 14:18
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
回复 39楼 TonyDeng
我也想过把所有记录全部放在一张大表,但是最后在备份的时候就得再用查询把里面以后不用的记录输出成新表,把新表备份,然后把原表中的记录删除。而且这样的话每次查询需要检索的记录数都会变多,花的时间会更长。
我现在是把一个大表分成了N个小表,备份的话把不用的表文件直接移走就行,在查询的时候用Union将几个表合并成临时表,而且我Union的表不会超过三个。
这两个思路到底哪个更规范点?
2011-07-08 14:26
快速回复:求组:表单修改时正常,运行时界面显示空白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034576 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved