VFP 中的 SQL SELECT 语句使用要点

VFP 中的 SQL SELECT 语句使用要点

ID:37908839

大小:75.50 KB

页数:22页

时间:2019-06-02

VFP 中的 SQL SELECT 语句使用要点_第1页
VFP 中的 SQL SELECT 语句使用要点_第2页
VFP 中的 SQL SELECT 语句使用要点_第3页
VFP 中的 SQL SELECT 语句使用要点_第4页
VFP 中的 SQL SELECT 语句使用要点_第5页
资源描述:

《VFP 中的 SQL SELECT 语句使用要点》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VFP中的SQLSELECT语句使用要点作者:康康(张初康)第一节select-SQL的工作流程再复杂的SQLSELECT命令,也是由一些基本的结构组成的。所以在看、去做一条很复杂的SQLSELECT命令时,要会把它一级一级的折分,最后折成最简单的,这样才容易理解。而这个折分过程,如果不熟悉SQLSELECT命令的工作流程,那就比较难折分了。大体来说,它是先根据联接条件(即联接条件on中的表达式),把几个的表合成一个临时表,然后根据where中的条件进行过滤,过滤出来的结果根据分组条件再把这个临时表分成一组一组,然后对分别对些组进行字段计算,最后又得出一个临时表,然后又

2、根据having中的条件对这个临时表进行再次过滤,最后输入到指定的地方,如数组、表等。它中间生成的临时表对用户来说,是完全透明的,用户是不可能使用、也不能创建,它是由系统自己创建、自己使用、自己撤除,完全不受用户控制的。我举个例子:有二个表:提货单thd、提货单明细thdmx:thd提货单号    提货日期thdbh    thrq01    2000/01/0202    2000/01/1503    2000/02/01thdmx提货单号    产品编号    提货数量thdbh    cpbh    Thsl01    001    501    003    

3、1501    005    1202    001    1302    002    1402    005    2003    002    14现在有个要求:要统计day1=2000/01/01至day2=2000/01/20这段时间内,提货数量大于10的产品有那些,它们各自的总提货量是多少。命令如下:selecpbh,sum(thsl);  fromthdjointhdmx;    onthd.thdbh=thdmx.thdbh.and.thsl>10.and.betw(thrq,day1,day2);  groubycpbh;  intocurstemp1

4、为什么把thsl>0和betw(thrq,day1,day2)这二个条件表达式放在on那里,参见on、where与having的区别。它的工作流程:首先根据on中的过滤条件,对所涉及的表进行预处理。过程如下:两个表根据thd.thdbh=thdmx.thdbh进行合并,变成一个这样的临时表:thdbh1    thrq        thdbh2    Cpbh    thsl01    2000/01/02    01    001    501    2000/01/02    01    003    1501    2000/01/02    01    005

5、    1201    2000/01/02    02    001    1301    2000/01/02    02    002    1401    2000/01/02    02    005    2001    2000/01/02    03    002    1402    2000/01/15    01    001    502    2000/01/15    01    003    1502    2000/01/15    01    005    1202    2000/01/15    02    001    1302 

6、   2000/01/15    02    002    1402    2000/01/15    02    005    2002    2000/01/15    03    002    1403    2000/02/01    01    001    503    2000/02/01    01    003    1503    2000/02/01    01    005    1203    2000/02/01    02    001    1303    2000/02/01    02    002    1403    2000/0

7、2/01    02    005    2003    2000/02/01    03    002    14合并是按照笛卡尔积进行计算的,即二个表都有10个记录,那积就会有10*10=100个记录,这是很历害的。但因为on条件中有过滤条件,所以VFP并不会这么笨,它会把符合这个条件的记录才放到临时表中的。这样,结果就少了很多记录了。结果出来后,再根据on后来的过滤条件thsl>10.and.betw(thrq,day1,day2)进行过滤,这样thsl大于10而且提货日期是在day1至day2的记录最后才出现在这一步的临时表中。0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。