一个SQL!!!!!!!!!!

hudingchen 2007-11-26 07:29:17
tb1: costNo1,costNo2 空白表示null
userID costNo1 costNo2
aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003

tb2:
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
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShenLiang2025 2007-11-29
  • 打赏
  • 举报
回复
他的表tb1,tb2(SQL程序里我分别用tb11和tb22表示的)


--他的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都对的~~~

commanager 2007-11-28
  • 打赏
  • 举报
回复
就用2楼的吧
yijianzuifeng 2007-11-28
  • 打赏
  • 举报
回复
2楼的正确
bugchen888 2007-11-27
  • 打赏
  • 举报
回复
2楼正解.
凤影 2007-11-26
  • 打赏
  • 举报
回复
select b.costNo,b.costName,a.userID from tb1 a ,tb2 b where a.costNo1=b.costNo or a.costNo2=b.costNo
Croatia 2007-11-26
  • 打赏
  • 举报
回复
楼上的,应该是LZ要的。
BlueSuperMan 2007-11-26
  • 打赏
  • 举报
回复

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
wdswcy 2007-11-26
  • 打赏
  • 举报
回复

select t2.costno,t2.costname,t1.userid
from tb1 t1
left join tb2 t2 on (t2.costno=t1.costno);
有点乱,没大看明白,试试,这是不是你想要的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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