标题:如何运用SELECT - SQL 命令
只看楼主
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
结帖率:90.91%
已结贴  问题点数:10 回复次数:30 
如何运用SELECT - SQL 命令
有表A
ZD1  ZD2
A    2
B    3
C    4

表B
ZD1  ZD2
A    12
B    13
D    14
E    15
E    20

能否用SELECT - SQL 命令,一步到位产生表C

ZD1  ZD2  ZD3

A    2    12
B    3    13
C    4   
D         14
E         35
搜索更多相关主题的帖子: 命令 SELECT SQL 
2010-03-08 12:31
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
同样期望知道结果……期待中

只求每天有一丁点儿的进步就可以了
2010-03-08 12:48
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:2 
试试吧!
select d.zd1,d.zd2,sum(d.zd3) as zd3 form (select b.zd1,a.zd2,b.zd2 as zd3 from b left outer join a on a.zd1=b.zd1) d group by d.zd1 into table c

★★★★★为人民服务★★★★★
2010-03-08 16:11
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
或者
select d.zd1,b.zd2,d.zd2 as zd3 from (select zd1,sum(zd2) as zd2 from a group by zd1) d left outer join b on b.zd1=d.zd1

★★★★★为人民服务★★★★★
2010-03-08 16:14
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
1、要先有个共用字段,比如xh(序号)。所以两表为:

表A
XH  ZD1  ZD2
1    A    2
2    B    3
3    C    4

表B
XH  ZD1  ZD2
1    A    12
2    B    13
4    D    14
5    E    15
5    E    20

2、
sele 表2.xh,表2.zd1,sum(表2.zd2) as zd3 from 表2 grou by zd1 into table 表3
sele 表1.zd1,表1.zd2,表3.zd3 from 表1 left outer join 表3 on 表1.xh=表3.xh
2010-03-08 17:50
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:2 
如果表1的zd1得值是唯一的,而表2的zd1有重复值
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

如果表1和表2的zd1都有重复值(建议使用)
select a0.zd1,a1.zd2,a2.zd3 from (SELECT zd1 FROM 表1 UNION sele zd1 FROM 表2) a0 LEFT OUTER JOIN (select zd1,sum(zd2) zd3 from 表2 group by zd1) a2 ON a2.zd1=a0.zd1 left outer join (select zd1,sum(zd2) zd2 from 表1 group by zd1) a1 on a1.zd1=a0.zd1

以上代码是参考4楼修改的。

[ 本帖最后由 sywzs 于 2010-3-9 07:03 编辑 ]
2010-03-09 07:00
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢 cnfarer,你的
select d.zd1,d.zd2,sum d.zd3) as zd3 form (select b.zd1,a.zd2,b.zd2 as zd3 from b left outer join a on a.zd1=b.zd1) d group by d.zd1 into table c

中 d 是什么?如果是指表A,那么代入后,程序运行出错。
2010-03-09 08:11
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
d是一个查询结果,不用代入,直接运行(因为没有测试有个别地方有手误比如那个form 应该是from),自己试吧!

★★★★★为人民服务★★★★★
2010-03-09 08:23
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢tlliqi。表A、表B有共用字段ZD1。因此不要增加字段 xh(序号)。程序的效果是

表3

 ZD1  ZD2  ZD3
  A    2   12
  B    3   13
  C    4   .NULL.

好像没有达到期望的效果。
2010-03-09 08:24
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:0 
谢谢 cnfarer,D 不代入,执行程序,仍然运行出错。
2010-03-09 08:42



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




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

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