有如下三个表
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不能显示名,请教如何输出如上数据

解决方案 »

  1.   

    select 
    (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
      

  2.   

    select 
    (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
      

  3.   

    12:28:56 tina@PRACTICE> select * from tb2;    NAMEID NAME
    ---------- ----------
             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
      

  4.   

    有这个问题
    ORA-01427: 单行子查询返回多于一个行
      

  5.   

    NAMEID,JOBID不是主键?怎么会返回多行
      

  6.   

    现在是
    对应的job1,job2项目分别作对应的表,
    有没有其他方法...
      

  7.   

    查下tb3里面的jobid是否有重复
    select jobid from tb3
    group by jobid
    having count(1)>1如果重复的不影响结果,可以试试在在子查询中的条件里加上and rownum=1