左外部联接在oracle中未按预期工作

左外部联接在oracle中未按预期工作,oracle,Oracle,我正在处理oracle数据库,我想从表2获取数据。所以我使用了join。我的桌子如下: CUSTOMER_DTLS_TBL CUST_ID CUST_CODE 68 A2157021570 CUSTOMER_MAPPING_TBL ID AMOUNT CUST_ID CODE PID 1 200 68 A2157021570 383 2 800

我正在处理oracle数据库,我想从表2获取数据。所以我使用了join。我的桌子如下:

CUSTOMER_DTLS_TBL

CUST_ID     CUST_CODE

68          A2157021570

CUSTOMER_MAPPING_TBL

ID      AMOUNT      CUST_ID     CODE            PID 
1       200         68          A2157021570     383
2       800         68          A2157021570     392


// NO RECORD FOUND

SELECT CDT.CUST_ID,CDT.CUST_CODE,CMT.AMOUNT,CMT.PID
FROM CUSTOMER_DTLS_TBL CDT, CUSTOMER_MAPPING_TBL CMT
WHERE CDT.CUST_ID = CMT.CUST_ID(+)
AND CMT.PID = 383;


// 1 RECORD FOUND

SELECT CDT.CUST_ID,CDT.CUST_CODE,CMT.AMOUNT,CMT.PID
FROM CUSTOMER_DTLS_TBL CDT, CUSTOMER_MAPPING_TBL CMT
WHERE CDT.CUST_ID = CMT.CUST_ID(+)
AND CMT.PID = 392;
我运行第一个查询时的预期输出是:

68      A2157021570     200     383

您是否尝试过编写实际联接而不是(+)?是否尝试过此-
CMT.PID(+)=383
。确定此列是JOIN子句还是FILTER子句的一部分。最好明确提到连接和条件。culumn的数据类型是相同的。可能是custid neads trim()。此查询正在返回多少条记录选择CDT.CUST\u ID、CDT.CUST\u CODE、CMT.AMOUNT、CMT.PID FROM CUSTOMER\u DTLS\u TBL CDT、CUSTOMER\u MAPPING\u TBL CMT其中CDT.CUST\u ID=CMT.CUST\u ID(+)首先尝试SELECT*FROM CUSTOMER\u MAPPING\u TBL其中PID=383。它工作吗?CUST_ID列可能是CHAR还是VARCHAR2?然后,您可以尝试将其合并,以使其中一个CMT.CUST_ID不包含空格。例如:从CUSTOMER\u DTLS\u TBL CDT LEFT JOIN CUSTOMER\u MAPPING\u TBL CMT ON(CDT.CUST\u ID=TRIM(CMT.CUST\u ID))您是否尝试过编写实际的连接而不是(+)?您是否尝试过此-
CMT.PID(+)=383
。确定此列是JOIN子句还是FILTER子句的一部分。最好明确提到连接和条件。culumn的数据类型是相同的。可能是custid neads trim()。此查询正在返回多少条记录选择CDT.CUST\u ID、CDT.CUST\u CODE、CMT.AMOUNT、CMT.PID FROM CUSTOMER\u DTLS\u TBL CDT、CUSTOMER\u MAPPING\u TBL CMT其中CDT.CUST\u ID=CMT.CUST\u ID(+)首先尝试SELECT*FROM CUSTOMER\u MAPPING\u TBL其中PID=383。它工作吗?CUST_ID列可能是CHAR还是VARCHAR2?然后,您可以尝试将其合并,以使其中一个CMT.CUST_ID不包含空格。例如:从CUSTOMER\u DTLS\u TBL CDT LEFT加入CUSTOMER\u MAPPING\u TBL CMT ON(CDT.CUST\u ID=TRIM(CMT.CUST\u ID))