Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 执行左连接以及where条件_Sql_Oracle - Fatal编程技术网

Sql 执行左连接以及where条件

Sql 执行左连接以及where条件,sql,oracle,Sql,Oracle,我用这个查询得到结果 SELECT * FROM TRXN_REPORT CNT, TBL_CUSTINFO CUSTADDINFO, TBL_DEAL_EVT EVENT, TBL_MISCADDR CIFMISC WHERE CNT.INTERNAL_REF_NUM = EVENT.INTERNAL_REF_NUM AND CNT.BRANCH = EVENT.BRANCH AND CNT.QFXVERSIO

我用这个查询得到结果

 SELECT * 
    FROM TRXN_REPORT CNT, 
    TBL_CUSTINFO CUSTADDINFO, 
    TBL_DEAL_EVT EVENT, 
    TBL_MISCADDR CIFMISC       
    WHERE CNT.INTERNAL_REF_NUM = EVENT.INTERNAL_REF_NUM 
    AND CNT.BRANCH = EVENT.BRANCH 
    AND CNT.QFXVERSION = EVENT.QFXVERSION 
    AND CNT.VALUEDATE = EVENT.VALUEDATE 
    AND CNT.LIQ_STATUS = 'L' 
    AND EVENT.EVENTCODE = 'LLIQ' -- Liquidation Event 
    AND CUSTADDINFO.CUSTOMER_NO = CNT.CUST_NUM 
    AND CIFMISC.CUSTOMER_NUMBER = CNT.CUST_NUM 
    AND CUSTADDINFO.REC_STATUS       ='O' 
    AND CIFMISC.REC_STATUS       = 'O' 
    AND MY_PBG_CUSTOMER = 'Y' 
    AND (BUYCCYCODE = 'USD' OR SELLCCYCODE ='USD') 
这里是这个条件

和CIFMISC.CUSTOMER\u NUMBER=CNT.CUST\u NUM


只获取那些同时存在于
TBL\u miscadrr
TRXN\u REPORT
表中的记录,现在作为要求的改变,我想执行左外连接,以便获取那些不在
TBL\u miscadrr
表中但存在于
TRXN\u BATCHREPORT\u WRK
中的记录。如何在维护所有where条件的同时执行此操作。

您必须在
join
ON
子句中指定join的条件。因此,WHERE子句中的当前条件应分为连接表的条件(这些条件移动到
ON
子句),其余条件用于选择行,这些条件应保留在
WHERE
子句中。示例(根据您的数据,我不知道是否正确,但您会明白的):

通过这种方式,您可以安全地使用
左联接
,其他表中不存在记录的行也将包括在内

。。。获取
TBL\u MISCADDR
表中不存在但 出现在
TRXN\u BATCHREPORT\u WRK


这将使用
TRXN\u BATCHREPORT\u WRK LEFT JOIN TBL\u MISCADDR ON

完成。您应该开始使用显式
JOIN
语法,而不是
where
子句中的隐式(非常古老)连接,左连接在哪里?@a_horse\u,没有名字谢谢您指导我正确的方向
SELECT * 
FROM TRXN_REPORT CNT 
LEFT JOIN TBL_DEAL_EVT EVENT ON 
        CNT.INTERNAL_REF_NUM = EVENT.INTERNAL_REF_NUM 
    AND CNT.BRANCH = EVENT.BRANCH 
    AND CNT.QFXVERSION = EVENT.QFXVERSION 
    AND CNT.VALUEDATE = EVENT.VALUEDATE
LEFT JOIN SOME_OTHER_TABLE T ON
...
WHERE 
    AND CUSTADDINFO.REC_STATUS       ='O' 
    AND CIFMISC.REC_STATUS       = 'O' 
    AND MY_PBG_CUSTOMER = 'Y' 
    AND (BUYCCYCODE = 'USD' OR SELLCCYCODE ='USD') 
....