有如下三个表
tb1
nameid jobid1,jobid2
1 aaa ,bbb
2 bbb ,ccc tb2
nameid name
1 张山
2 李四
tb3
jobid job
aaa 程序员
bbb 音乐家
ccc 作家希望得到张山 程序员 音乐家李四 音乐家 上海
张山 音乐家 作家
用了如下语句
SELECT
tb2。name,tb3。job job1,tb3。job job2
FROM tb1,tb2,tb3
WHERE tb1.nameid =tb2.nameid(+)
and tb1.jobid=tb3.jobid1(+)
and tb1.jobid=tb3.jobid2(+)
结果name和 job不能显示名,请教如何输出如上数据
tb1
nameid jobid1,jobid2
1 aaa ,bbb
2 bbb ,ccc tb2
nameid name
1 张山
2 李四
tb3
jobid job
aaa 程序员
bbb 音乐家
ccc 作家希望得到张山 程序员 音乐家李四 音乐家 上海
张山 音乐家 作家
用了如下语句
SELECT
tb2。name,tb3。job job1,tb3。job job2
FROM tb1,tb2,tb3
WHERE tb1.nameid =tb2.nameid(+)
and tb1.jobid=tb3.jobid1(+)
and tb1.jobid=tb3.jobid2(+)
结果name和 job不能显示名,请教如何输出如上数据
(select name from tb2 where tb2.nameid=tb1.nameid) as name,
(select job from tb2 where tb3.jobid=tb1.jobid1) as job1,
(select job from tb2 where tb3.jobid=tb1.jobid2) as job2,
FROM tb1
(select name from tb2 where tb2.nameid=tb1.nameid) as name,
(select job from tb3 where tb3.jobid=tb1.jobid1) as job1,
(select job from tb3 where tb3.jobid=tb1.jobid2) as job2,
FROM tb1
上面错了,应该是TB3
---------- ----------
1 张山
2 李四已用时间: 00: 00: 00.00
12:29:00 tina@PRACTICE> select * from tb3;JOBID JOB
---------- ----------
aaa 程序员
bbb 音乐家
ccc 作家已用时间: 00: 00: 00.00
12:29:03 tina@PRACTICE> select a.name,b.job job1,c.job job2 from
12:31:00 2 tb1 t,tb2 a,tb3 b,tb3 c
12:31:00 3 where t.nameid = a.nameid and t.jobid1 = b.jobid and t.jobid2 = c.jobid;NAME JOB1 JOB2
---------- ---------- ----------
张山 程序员 音乐家
李四 音乐家 作家已用时间: 00: 00: 00.01
ORA-01427: 单行子查询返回多于一个行
对应的job1,job2项目分别作对应的表,
有没有其他方法...
select jobid from tb3
group by jobid
having count(1)>1如果重复的不影响结果,可以试试在在子查询中的条件里加上and rownum=1