VFP中的SQLSELECT语句使用要点.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VFP中的SQLSELECT语句使用要点

VFP 中的 SQL SELECT 语句使用要点作者: 康康(张初康) 第一节 select - SQL 的工作流程 再复杂的 SQL SELECT 命令,也是由一些基本的结构组成的。所以在看、去做一条很复杂的 SQL SELECT 命令时,要会把它一级一级的折分,最后折成最简单的,这样才容易理解。而这个折分过程,如果不熟悉 SQL SELECT 命令的工作流程,那就比较难折分了。 大体来说,它是先根据联接条件(即联接条件 on 中的表达式),把几个的表合成一个临时表,然后根据 where 中的条件进行过滤,过滤出来的结果根据分组条件再把这个临时表分成一组一组,然后对分别对些组进行字段计算,最后又得出一个临时表,然后又根据 having 中的条件对这个临时表进行再次过滤,最后输入到指定的地方,如数组、表等。它中间生成的临时表对用户来说,是完全透明的,用户是不可能使用、也不能创建,它是由系统自己创建、自己使用、自己撤除,完全不受用户控制的。我举个例子:有二个表:提货单 thd、提货单明细 thdmx: thd 提货单号????提货日期 thdbh????thrq 01????2000/01/02 02????2000/01/15 03????2000/02/01 thdmx 提货单号????产品编号????提货数量 thdbh????cpbh????Thsl 01????001????5 01????003????15 01????005????12 02????001????13 02????002????14 02????005????20 03????002????14 现在有个要求:要统计 day1 = 2000/01/01 至 day2 = 2000/01/20 这段时间内,提货数量大于 10 的产品有那些,它们各自的总提货量是多少。命令如下: sele cpbh,sum(thsl) ; ??from thd join thdmx ; ????on thd.thdbh=thdmx.thdbh.and.thsl10.and.betw(thrq,day1,day2) ; ??grou by cpbh ; ??into curs temp1 为什么把 thsl0 和 betw(thrq,day1,day2) 这二个条件表达式放在 on 那里,参见 on、where 与 having 的区别。它的工作流程: 首先根据 on 中的过滤条件,对所涉及的表进行预处理。过程如下: 两个表根据 thd.thdbh = thdmx.thdbh 进行合并,变成一个这样的临时表: thdbh1????thrq????????thdbh2????Cpbh????thsl 01????2000/01/02????01????001????5 01????2000/01/02????01????003????15 01????2000/01/02????01????005????12 01????2000/01/02????02????001????13 01????2000/01/02????02????002????14 01????2000/01/02????02????005????20 01????2000/01/02????03????002????14 02????2000/01/15????01????001????5 02????2000/01/15????01????003????15 02????2000/01/15????01????005????12 02????2000/01/15????02????001????13 02????2000/01/15????02????002????14 02????2000/01/15????02????005????20 02????2000/01/15????03????002????14 03????2000/02/01????01????001????5 03????2000/02/01????01????003????15 03????2000/02/01????01????005????12 03????2000/02/01????02????001????13 03????2000/02/01????02????002????14 03????2000/02/01????02????005????20 03????2000/02/01????03????002????14 合并是按照笛卡尔积进行计算的,即二个表都有 10 个记录,那积就会有 10*10 = 100 个记录,这是很历害的。但因为 on 条件中有过滤条件,所以 VFP 并不会这么笨,它会

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档