- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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????thrq01????2000/01/0202????2000/01/1503????2000/02/01thdmx提货单号????产品编号????提货数量thdbh????cpbh????Thsl01????001????501????003????1501????005????1202????001????1302????002????1402????005????2003????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????thsl01????2000/01/02????01????001????501????2000/01/02????01????003????1501????2000/01/02????01????005????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????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/02/01????02????005????2003????2000/02/01????03????002????14合并是按照笛卡尔积进行计算的,即二个表都有 10 个记录,那积就会有 10*10 = 100 个记录,这是很历害的。但因为 on 条件中有过滤条件,所以 VFP 并不会这么笨,它会
文档评论(0)