Oracle内连接给出了错误的结果集

时间:2018-03-22 13:02:55

标签: sql oracle

当我执行此查询时,它会给出10个结果集。

  

从OA_SERVICE_REQUESTS WHERE中选择*   OA_SERVICE_REQUESTS.CUSREG_ID = 4

但是当我与其他表连接以获取更多信息时,我使用2个内连接,因为这是来自ELVM_SMUNT_CUS表的2个外键,它给出了120个结果

select * from OA_SERVICE_REQUESTS  
inner join ELVM_SMUNT_CUS T1 on OA_SERVICE_REQUESTS.DIVCOD = T1.DIVCOD 
inner join ELVM_SMUNT_CUS T2 on OA_SERVICE_REQUESTS.UNTNUM = T2.UNTNUM 
WHERE OA_SERVICE_REQUESTS.CUSREG_ID=4

1 个答案:

答案 0 :(得分:1)

尝试将它们组合在一起:

select * from OA_SERVICE_REQUESTS R 
 inner join ELVM_SMUNT_CUS T1 on ( R.DIVCOD = T1.DIVCOD 
                              and R.UNTNUM = T1.UNTNUM )
 where R.CUSREG_ID=4;

您的查询不会产生跨产品结果。

对于R.DIVCOD = T1.DIVCOD,您有12个匹配的记录,R.UNTNUM = T1.UNTNUM的{​​{1}}有10个匹配的记录,通过组合R.CUSREG_ID=4的结果集,您可以获得10个结果同时,如果条件被更多的连接分开,可能会产生120次出现12次10次。