tb1: costNo1,costNo2 空白表示null
userID costNo1 costNo2
aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003tb2:
costNo costName
001 A
002 B
003 C
表tb1z中的costNo1,costNo2和tb2的costNo对应
得到的结果:
costNo costName userID
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
userID costNo1 costNo2
aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003tb2:
costNo costName
001 A
002 B
003 C
表tb1z中的costNo1,costNo2和tb2的costNo对应
得到的结果:
costNo costName userID
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
解决方案 »
- oracle通过日志恢复一条数据
- oracle存储过程
- 在开发软件的时候,可以向用户提供哪些关于数据库的性能指标?
- 求个informatica licence key
- 高分求教 有关Oracle ERP 中 Concurrent Program 方面的内容。 up者有分 能帮忙解决所有问题的高手,我愿意另开200分相谢!!
- COBOL使用游标,一次fetch100件数据,请问如何实现(oracle)
- 这样的三张表的联合查询SQL语句该怎么写?
- 按F7键会显示cmd窗口的命令的历史记录,如何保存这些历史记录呢?
- 哪位能详细介绍一下label security的使用
- 如何在oracle中 insert into 多条记录??
- 如何在win中写一个批处理命令来执行oracle执行存储过程?
- 性能问题, 当多个并发用户中,有一个查询大量的数据时,其它用户的查询或相关操作就会很慢,像这种问题如何避免, 是不是需要两台ORACLE 服务器,数据是同步的,一台用作像OLTP的操作,一台用作像OLAP的大量查询操作
select t2.costno,t2.costname,t1.userid
from tb1 t1
left join tb2 t2 on (t2.costno=t1.costno);
有点乱,没大看明白,试试,这是不是你想要的
select b.costNo,b.costName,a.userID from tb1 a ,tb2 b where a.costNo1=b.costNo
union
select b.costNo,b.costName,a.userID from tb1 a ,tb2 b where a.costNo2=b.costNo
--他的tb1数据:aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003
--他的tb2数据:001 A
002 B
003 C --其实他想要的数据结果应该是这样的
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
--那么要显示上面的结果SQL 如下:(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2 and b.costName in('A','B')
)
intersect
(
select b.costNo,b.costName,a.userID from tb11 a ,tb22 b where a.costNo1=b.costNo
union
select b.costNo,b.costName,a.userID from tb11 a ,tb22 b where a.costNo2=b.costNo
)
--或者(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2 and b.costName in('A','B')
)
intersect
(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2
)如果只是显示下面结果
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C bbb
003 C fff --那么
(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2
);
--All Above都对的~~~