我正在使用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
行
如何确保我拥有所有可能的值?
答案 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;