2016-06-30 6 views
0

Oracle SQL結合を作成するための説明があります。Oracle SQL結合問合せの明確化

シナリオ:

私は2つのテーブルを持っています。

T1がT2は、以下の構造

CID、UID、PID

を有する

CID、PID、UID、CATID、catName、TID、TNAME、にTEvent

&以下の構造を有します

PS: cId、uIdおよびpIdは共通の列です

私は

1次、私を提供するIKEのSQL文)T1上のすべてのレコードの一致の有無にかかわらずT2

2)T1になっていないT2のレコード。

例: -

T1

cId  pId  uId  catId  catName  tId  tName tEvent 

1001 2010 dolp  11   Amber  1100  Rod  Login 
1001 2014 dolp  11   Amber  1100  Rod  Login 
1002 2010 dolp  13   Anders  1500  Oli  Login 
1003 2010 dolp  14   Rock  1501  Ret  Login 
1004 2010 dolp  15   Lila  1600  Win  Login 

T2

cId  pId  uId  catId  catName  tId  tName tEvent 

1001 2010 dolp  11   Amber  1100  Rod  Login 
{Record in T1} 
1001 2014 dolp  11   Amber  1100  Rod  Login {Record in T1} 
1002 2010 dolp  13   Anders  1500  Oli  Login {Record in T1} 
1003 2010 dolp  14   Rock  1501  Ret  Login {Record in T1} 
1004 2010 dolp  15   Lila  1600  Win  Login {Record in T1} 
1001 2015 dolp  11   Amber  1100  Rod  Login {Record in T2} 
01:

cId  pId  uId 

1001 2010 dolp 
1001 2015 dolp 

クエリは次の結果を提供する必要があります

これに関する助力は非常に高く評価されています。

ありがとうございました。

+0

最後の行のcatId、catNameなどの列の値がどのように取得されるのかを明確にしてください。 T2にはそのような列はありません。 – wolfrevokcats

答えて

2

1)T2における一致の有無にかかわらずT1上のすべてのレコード

SELECT T1.* 
FROM T1 LEFT OUTER JOIN T2 ON T2.cId=T1.cId 
          AND T2.uId=T1.uId 
          AND T2.pId=T1.uId 
/

2)T1にないT2にレコード。

SELECT T2.* 
FROM T2 
WHERE NOT EXISTS 
      (SELECT 1 
       FROM T1 
       WHERE T1.cId=T2.cId 
       AND T1.uId=T2.uId 
       AND T1.pId=T2.uId) 
/
0

左外部結合を使用します(T2は最初の表です)。ジョインの理解については、以下を参照してください。

select a.cId,a.pId,a.uId,b.catId,b.catName,b.tId,b.tName,b.tEvent from T2 a right outer join T1 b 
on a.cId = b.cId and a.pId =b.pId ; 

参照してください。http://www.techonthenet.com/oracle/joins.php