2017-09-26 6 views
0

てみてください左:今のOracle 11gは、このようなサンプルDB作成する問題への参加

CREATE TABLE "APP" 
    ( "CODICE" VARCHAR2(20 BYTE) 
    ); 

Insert into APP (CODICE) values ('A'); 
Insert into APP (CODICE) values ('B'); 
Insert into APP (CODICE) values ('C'); 
Insert into APP (CODICE) values ('D'); 
Insert into APP (CODICE) values ('E'); 

CREATE TABLE "APP2" 
    ( "CODICE" CHAR(1 BYTE), 
    "STATO" VARCHAR2(20 BYTE) 
    ); 

Insert into APP2 (CODICE,STATO) values ('A','E'); 
Insert into APP2 (CODICE,STATO) values ('B','E'); 
Insert into APP2 (CODICE,STATO) values ('C','E'); 

を、左を試してみてください。このように参加:

select app.codice codice1, 
    case 
     when app.codice in ('A','B','C') then 'OK' 
     when app.codice in ('D','E') then 'KO' 
     end azione, 
     tt.codice codice2, 
     tt.stato 
from app left join (select app2."CODICE", 'E' stato 
from app2) tt on app.codice=tt.codice 

結果は、コラム「stato非常に奇妙です"右のテーブルに属しているので、左の結合で、正しいキーがnullの場合はnullになり、codice2がnullの場合はnullになります。 codice = DまたはEの場合、右側の表は一致しませんが、stato列はNULLではありません。 静的な列 'E' statoを表app2の実数の列statoに置き換えた場合は発生しません。

+2

現在の結果と必要な結果を表示します。 (フォーマットされたテキストをお願いします。) – jarlh

+0

done ..... – user5919369

答えて

0

外部結合app2からappです。したがって、appのすべてのレコードをapp2(内部結合のように)と一致するすべてのレコードと、の一致するレコードがapp2になるように選択します。そして、これはあなたが得る正確に何

 
CODICE1 AZIONE CODICE2 STATO 
A  OK  A  E 
B  OK  B  E 
C  OK  C  E 
E  KO  NULL  NULL 
D  KO  NULL  NULL 

appレコードのA、B、およびCはapp2に正確に1試合ずつ持っています。 appレコードEとFにはレコードがありません。

app2内のすべてのレコードがstato = 'E'を持っているときはもちろんの

left join (select app2."CODICE", 'E' stato from app2) tt on app.codice=tt.codice 

left join (select app2."CODICE", app2.stato from app2) tt on app.codice=tt.codice 

left join app2 tt on app.codice=tt.codice 

ため、同じ結果を得るでしょう。

+0

はい、あなたの結果は私が期待するものですが、私が得るものではありません。私の最後の2レコードはSTATO = Eです。ケースステートメントを削除すると、正しい結果が得られます。これは私のOracleバージョンです。Oracle Database 11g Enterprise Editionリリース11.2.0.2.0 - 64ビット製品 – user5919369

+0

私にとってはうまく動作します。同じバージョン。参照してください:http://rextester.com/WOFW4225 –

+0

いいえ、それは私のようなケースで試してください、(ケースを削除する)、azione列を削除する場合は、私のためにも動作します... – user5919369

関連する問題