如何实现两个结构相同表的联合查询

angel518 2011-05-27 04:47:26
表A 如下
bianhao leixing shuliang
11 1 3
11 2 4
11 3 6
12 3 2
13 2 2
13 3 3


表B 如下
bianhao leixing shuliang
11 1 2
11 2 4
11 3 6
13 3 1
=====================================
从 bianhao和leixing两个字段看,B表的数据是A表的子集,现在想实现联合查询,查询结果为如果A表中某记录的bianhao和leixing两个字段同B表中的相同,则shuliang为A.shuliang-B.shuliang,否则保留为A的shuliang显示出来
我用select A.bianhao,A.leixing,A.shuliang-B.shuliang from A,B where A.bianhao=B.bianhao(+) and A.leixing=B.leixing(+),[/color]查出来的结果是B中不存在但A中存在的记录的shuliang字段变成空了,要怎么才能查询啊

正确结果应该是

bianhao leixing shuliang
11 1 [color=#FF0000]1

11 2 0
11 3 0
12 3 2
13 2 2
13 3 2
...全文
200 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2011-07-06
  • 打赏
  • 举报
回复
union all或union具体看是否去掉重复的行。
iLugo 2011-07-06
  • 打赏
  • 举报
回复
本来很简单的题给说的越来越复杂
angel518 2011-05-27
  • 打赏
  • 举报
回复
形如A表:
ID B_NO TOTAL
1 4001 3
2 4001 3
3 4001 5
4 4001 7
2 4021 4
3 4033 9
通过select distinct ID from A 可以得到ID值有1、2、3、4四种;
通过select distinct B_NO from A 可以得到B_NO值有4001、4021、4033三种;
现在想通过怎么操作,实现查询结果如下:
ID B_NO TOTAL
1 4001 3
2 4001 3
3 4001 5
4 4001 7

1 4021 0
2 4021 4
3 4021 0
4 4021 0

1 4033 0
2 4033 0
3 4033 9
4 4033 0
即对4021、4033按照ID扩展,TOTAL填值为0
304的的哥 2011-05-27
  • 打赏
  • 举报
回复

SQL> with a as(
2 select 11 bianhao,1 leixing,3 shuliang from dual union all
3 select 11,2,4 from dual union all
4 select 11,3,6 from dual union all
5 select 12,3,2 from dual union all
6 select 13,2,2 from dual union all
7 select 13,3,3 from dual)
8 ,b as(
9 select 11 bianhao,1 leixing,2 shuliang from dual union all
10 select 11,2,4 from dual union all
11 select 11,3,6 from dual union all
12 select 13,3,1 from dual)
13 select a.bianhao,a.leixing,nvl((a.shuliang-b.shuliang),a.shuliang) shulaing
14 from a,b
15 where a.bianhao=b.bianhao(+)
16 and a.leixing=b.leixing(+)
17 order by a.bianhao
18 /

BIANHAO LEIXING SHULAING
---------- ---------- ----------
11 1 1
11 2 0
11 3 0
12 3 2
13 3 2
13 2 2
angel518 2011-05-27
  • 打赏
  • 举报
回复
另外,有没有办法实现对B表进行扩充,要求B表的数据和A表一样多(shuliang字段不同,B表中原来没有的记录shuliang字段都填0),这样产生个新的查询C 再同A联合查询就好多了,有这样的实现吗

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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