Oracle SQL连接查询澄清

Oracle SQL连接查询澄清,sql,oracle,join,Sql,Oracle,Join,我对wrt Oracle SQL联接有一个澄清 场景: 我有两张桌子 T1具有以下结构 cId、pId、uId、catId、catName、tId、tName、tEvent &T2具有以下结构 cId、uId、pId PS:cId、uId和pId是公共列 我想要一个sqL语句,它将为我提供以下内容 1) T1上的所有记录在T2中是否匹配 2) T2上不在T1中的记录 Ex:- T1: cId pId uId catId catName tId

我对wrt Oracle SQL联接有一个澄清

场景:

我有两张桌子

T1具有以下结构

cId、pId、uId、catId、catName、tId、tName、tEvent

&T2具有以下结构

cId、uId、pId

PS:cId、uId和pId是公共列

我想要一个sqL语句,它将为我提供以下内容

1) T1上的所有记录在T2中是否匹配

2) T2上不在T1中的记录

Ex:-

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

1001    2010    dolp
1001    2015    dolp
查询应提供以下结果:

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}
非常感谢您在这方面的帮助


谢谢。

使用左侧外部联接,其中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 ;

请参阅:

使用左侧外部联接,其中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 ;
请参阅:

1)T1上的所有记录在T2中是否匹配

SELECT T1.*
FROM T1 LEFT OUTER JOIN T2 ON T2.cId=T1.cId 
                          AND T2.uId=T1.uId 
                          AND T2.pId=T1.uId
/ 
2)T2上不在T1中的记录。

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)
/
1)T1上的所有记录在T2中是否匹配

SELECT T1.*
FROM T1 LEFT OUTER JOIN T2 ON T2.cId=T1.cId 
                          AND T2.uId=T1.uId 
                          AND T2.pId=T1.uId
/ 
2)T2上不在T1中的记录。

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)
/

请澄清最后一行中的catId、catName等列是如何获取其值的。T2中没有此类列。请澄清最后一行中的catId、catName等列是如何获取其值的。T2中没有这样的列。