多表连接取最大级的问题,Oralce的细节问题与SQL Server不同,解决就送分

dtliupeng 2003-10-15 05:17:01
有三张表 A,B,C

A(code,blanknum)
B(code,badnum)
C(code,usednum)

记录结果集:
A表
code blandnum
2 20
3 40
5 10
B表
code badnum
3 5
5 6
7 90
C表
code usednum
3 6
5 7
8 0
9 100
现在要得到结果集
code blanknum badnum usednum
2 20 0 0
3 40 5 6
5 10 6 7
8 0 0 0
9 0 0 100


就是得到三张表的并集,请问SQL语句该如何解决?
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-15
  • 打赏
  • 举报
回复
0+N 等于 N
你举个例吧。
dtliupeng 2003-10-15
  • 打赏
  • 举报
回复

请问,在那几个子查询中,用到值0,那么如果该列的有值那不就错了吗?
pengdali 2003-10-15
  • 打赏
  • 举报
回复
如果他的表有关系结构应该是一样的,trim只会影响速度。
beckhambobo 2003-10-15
  • 打赏
  • 举报
回复
有可能code有空格,试试这样
group by trim(code)
pengdali 2003-10-15
  • 打赏
  • 举报
回复
我不试是写了group by 吗?你没试试吗?
dtliupeng 2003-10-15
  • 打赏
  • 举报
回复
用union all会出现重复地记录
code blanknum
2 20
3 40
3 0
pengdali 2003-10-15
  • 打赏
  • 举报
回复
select code,sum(blandnum) blandnum,sum(badnum) badnum,sum(usednum) usednum from (
select code,blandnum,0 badnum,0 usednum from A表
union all
select code,0 blandnum,badnum,0 usednum from B表
union all
select code,0 blandnum,0 badnum,usednum from C表
) group by code

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧