2016-05-04 14 views
-1

Ich habe zwei Tabellen, ROLE und ROLE_DESC.äußere verbinden zwei Tabellen

ROLE sieht so aus.

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

ROLE_DESC sieht so aus.

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

Wie zu erwarten, ROLE_TYPE von ROLLE andROLE_TYPE von ROLE_DESC Referenz einander. Es gibt drei Entitäten in ROLE_DESC, wie folgt.

ROLE_TYPE ROLE_NAME 
A   Account 
M   Manager 
S   Sales 

Ich möchte ganz drucken role_type und role_name durch zwei Verbindungs ​​Tabellen dachte sogar ROLE Tabelle nicht eine gewisse ROLE_TYPE hat. Zum Beispiel, wenn es kein 'S' role_type für PS_SEQ = 111 ist. Ich habe versucht, dies, aber ich habe nur unten.

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 

Ergebnis:

A Account Bob 
M Manager Sandy 

Eigentlich würde Ich mag folgendes erhalten.

A Account Bob 
M Manager Sandy 
S Sales 

Ermöglicht die äußere Verbindung das? Könntest du bitte einen Hinweis auf diese Frage geben?

+2

Ist es nicht die gleiche Frage als [diese] (http://stackoverflow.com/questions/37027903/join-two-tables-when -ist-es-kein-Wert-in-einem-Tabelle)? – Aleksej

+0

Es ist anders, aber der Zweck ist gleich. Wenn Sie möchten, kann ich die vorherige Frage löschen. Es tut mir leid, dass ich verwirrt bin. –

+1

Ich schlage vor, die erste Frage zu bearbeiten, dann schließen Sie diese – Aleksej

Antwort

0
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 

Wenn es in der WHERE-Klausel ist, filtern Sie das Ergebnis. Und im Ergebnis ist ROLE.PS_SEQ Null für Sales und Null <> 111

+0

Vielen Dank, ich habe das aus Ihrer Antwort gelöst. –

Verwandte Themen