【问题标题】:outer join two tables外连接两个表
【发布时间】:2016-08-30 02:17:42
【问题描述】:

我有两个表,ROLE 和 ROLE_DESC。

ROLE 看起来像这样。

PS_ROLE_SEQ  NUMBER,    
PS_SEQ       NUMBER,    
ROLE_TYPE            VARCHAR2(2 CHAR),    
SOURCE               VARCHAR2(128 CHAR)

ROLE_DESC 看起来像这样。

ROLE_TYPE  VARCHAR2(2 CHAR),    
ROLE_NAME  VARCHAR2(16 CHAR)

如你所料,ROLE_TYPE 的 ROLE and ROLE_TYPEROLE_DESC 相互引用。 ROLE_DESC里面有3个实体,像这样。

ROLE_TYPE   ROLE_NAME
A           Account
M           Manager
S           Sales

我想打印整个 role_typerole_name 通过加入两个表即使认为 ROLE 表没有特定的 ROLE_TYPE。 例如,如果 PS_SEQ = 111 没有'S'role_type。我试过了,这个,但我只得到了下面。

select ROLE_DESC.ROLE_TYPE, ROLE_DESC.ROLE_NAME, ROLE.SOURCE 
FROM ROLE_DESC
LEFT OUTER JOIN ROLE
ON ROLE_DESC.role_type=ROLE.role_type
where ROLE.PS_SEQ = 111

结果:

A   Account Bob
M   Manager Sandy

其实,我想得到关注。

A   Account Bob
M   Manager Sandy
S   Sales

外连接是否可以实现?能否请您为这个问题提供一些线索?

【问题讨论】:

标签: oracle join outer-join


【解决方案1】:
select ROLE_DESC.ROLE_TYPE, ROLE_DESC.ROLE_NAME, ROLE.SOURCE
  FROM ROLE_DESC
  LEFT OUTER JOIN ROLE
ON ROLE_DESC.role_type=ROLE.role_type AND ROLE.PS_SEQ = 111

当它在 WHERE 子句中时,您过滤结果。结果 ROLE.PS_SEQ 为 Null for Sales 和 Null 111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多