sql oracle获取lib表的所有可能值

时间:2018-11-20 12:40:58

标签: sql oracle

我正在使用SQL ORACLE

我有一个图书馆表:

libid   libdescr
1       boss
2       secretary
3       manager

还有带有一些信息的表:

id  libid   descr
1   1   jim
1   2   james
2   1   rony
2   2   fred
2   3   jana

我想同时加入两者,但是我必须拥有该库的所有可能值。所以我的结果必须是:

id  libid   libdescr    descr
1   1       bos         jim
1   2       secretary   james
1   3       manager     <null>
2   1       boss        rony
2   2       secretary   fred
2   3       manager     jana

如果我加入

select info.*,lib.libdescr
from info
left join lib
on lib.libid = info.libid

我没有得到id=1 and libid=3

如何确保我拥有所有可能的值?

2 个答案:

答案 0 :(得分:1)

在查询中,您需要使用右连接或使用以下查询:

select i.*, l.libdescr from lib l left join info i on l.libid=i.libid;             

答案 1 :(得分:0)

使用cross join生成行,使用left join引入另一个表中的值:

select i.id, l.libid, l.libdescr, s.descr
from (select distinct id from someinfo) i cross join
     library l left join
     someinfo s
     on s.id = i.id and s.libid = l.libid;