标题:如何运用SELECT - SQL 命令
只看楼主
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢sywzs,你的
select a0.zd1,表1.zd2,a2.zd3 from (SELECT zd1 FROM 表1 UNION sele zd1 FROM 表2) a0 LEFT OUTER JOIN (select zd1,sum(zd2) as zd3 from 表2 group by zd1) a2 ON a2.zd1=a0.zd1 left outer join 表1 on 表1.zd1=a0.zd1

a0,a2,表1,表2含义不明,能否采用题目中的表A、表B。程序运行出错。
 
2010-03-09 08:48
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:0 
SELECT A0.ZD1,表A.ZD2,A2.ZD3 FROM (SELECT ZD1 FROM 表A UNION SELECT ZD1 FROM 表B) A0 LEFT OUTER JOIN (SELECT ZD1,SUM(ZD2) ZD3 FROM 表B GROUP BY ZD1) A2 ON A2.ZD1=A0.ZD1 LEFT OUTER JOIN 表A ON 表A.ZD1=A0.ZD1

其中 A0 是第一个括号内所获得的查询的别名,A2 是第二个括号内所获得的查询的别名。另外,用“表A”代替“表1”,“表B”代替“表2”就可以了。

[ 本帖最后由 sywzs 于 2010-3-9 09:47 编辑 ]
2010-03-09 09:44
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢sywzs,你的
SELECT A0.ZD1,表A.ZD2,A2.ZD3 FROM (SELECT ZD1 FROM 表A UNION SELECT ZD1 FROM 表B) A0 LEFT OUTER JOIN (SELECT ZD1,SUM(ZD2) ZD3 FROM 表B GROUP BY ZD1) A2 ON A2.ZD1=A0.ZD1 LEFT OUTER JOIN 表A ON 表A.ZD1=A0.ZD1

我在8.0 运行,程序出错。
2010-03-09 11:23
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:0 
我用的是9.0,结果如下图:
2010-03-09 11:33
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢sywzs,我再试试。
2010-03-09 14:26
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢sywzs,在9.0 中,程序正常执行。效果如你的一样。我常用8.0 ,在8.0中命令应如何修改。
2010-03-09 14:34
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
这个行了!我在VFP9中测试过的
SELECT d.zd1,a.zd2,e.zd2 from (SELECT a.zd1 FROM a UNION  SELECT b.zd1 FROM b) d LEFT OUTER JOIN a ON d.zd1=a.zd1 LEFT OUTER JOIN (select zd1,sum(zd2) as zd2 from b group by zd1) e ON d.zd1=e.zd1  INTO TABLE c

★★★★★为人民服务★★★★★
2010-03-09 15:48
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
得分:0 
如果字段都是字符型:vfp6.0下运行 得到表 cc

close all
sele nvl(表a.zd1,表b.zd1) zd1,表a.zd2 as zd2, val(表b.zd2) as zd3 from (表a full join 表b on 表a.zd1=表b.zd1) into cursor gg
total to cc on zd1 field zd3
select zd1,zd2,str(zd3) as zd3 from cc  && 此句没有也行

(对不起,没有一步到位,让高手继续修改吧,)

[ 本帖最后由 qingfameng 于 2010-3-10 03:06 编辑 ]
2010-03-10 00:34
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
得分:0 
.      .

[ 本帖最后由 qingfameng 于 2010-3-10 00:41 编辑 ]
2010-03-10 00:39
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 

例题是很有用的。例如表A,可以是库存表,表B可以是流水账。通过程序可以产生统计汇总。我经常要做这样的事,是用一组命令实现的。也尝试过用UPDATE - SQL 命令。但是效果不好,不稳定,有时会产生不替换的现象。可能是我运用UPDATE - SQL 命令不当。

贴子发出后,许多老师、高手进行指教,在此深表感谢。不仅我受益匪浅,相信不少狐友也有所启发。

谢谢cnfarer,你的程序
SELECT d.zd1,表a.zd2,e.zd2 from (SELECT 表a.zd1 FROM 表a UNION  SELECT 表b.zd1 FROM 表b) d LEFT OUTER JOIN 表a ON d.zd1=表a.zd1 LEFT OUTER JOIN (select zd1,sum(zd2) as zd2 from 表b group by zd1) e ON d.zd1=e.zd1  INTO TABLE c
在9.0 中,运行正常。 在8.0 中不能运行。

谢谢qingfameng,你的程序在6.0、8.0 中运行出错。

我经常使用的是8.0,在8.0 中,程序该怎样写?
2010-03-10 08:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-298813-1-1.html




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

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