sql - DB2 SQL 多个 JOIN 问题
问题描述
我有一个带有两个 JOIN 的查询,但它不起作用。我没有错误。它只是不返回任何记录。如果我分开我的查询,那么它就可以工作。我在这里做错了什么?
当我拆分查询时,我得到一个记录,这是我应该得到的。
完整查询:
SELECT HPOL07.*, @RFC.*, @AAM.*
FROM BPCSPROF.HPOL07
JOIN BPCSPROF.@RFC ON PRFC = @RFC.RFCNUM AND PPRF = @RFC.RFCPRC
AND PGLNO = @RFC.RFCGLN
JOIN BPCSPROF.@AAM ON PPRF = @AAM.AAMPRC AND PGLNO = @AAM.AAMGLN
WHERE PORD = '605400' AND PID <> 'PZ'
单独的查询:
SELECT HPOL07.*, @RFC.*
FROM BPCSPROF.HPOL07
JOIN BPCSPROF.@RFC ON PRFC = @RFC.RFCNUM AND PPRF = @RFC.RFCPRC
AND PGLNO = @RFC.RFCGLN
WHERE PORD = '605400' AND PID <> 'PZ'
SELECT HPOL07.*, @AAM.*
FROM BPCSPROF.HPOL07
JOIN BPCSPROF.@AAM ON PPRF = @AAM.AAMPRC AND PGLNO = @AAM.AAMGLN
WHERE PORD = '605400' AND PID <> 'PZ'
解决方案
您正在执行内部连接,因此对于 HPOL07 中的每条记录,@RFC 和 @AAM 中都必须有一条记录...
那是你要的吗?
如果@RFC 或@AAM 中有匹配的记录,那么您需要使用LEFT OUTER JOIN
SELECT HPOL07.*, @RFC.*, @AAM.*
FROM BPCSPROF.HPOL07
LEFT OUTER JOIN BPCSPROF.@RFC
ON PRFC = @RFC.RFCNUM AND PPRF = @RFC.RFCPRC
AND PGLNO = @RFC.RFCGLN
LEFT OUTER JOIN BPCSPROF.@AAM
ON PPRF = @AAM.AAMPRC AND PGLNO = @AAM.AAMGLN
WHERE PORD = '605400' AND PID <> 'PZ'
推荐阅读
- javascript - 在通过 JavaScript 的 Canvas 中,如何将对象移动到不同的坐标?
- postgresql - 有条件地从一个表插入到另一个表中
- python - DisallowedHost at / Invalid HTTP_HOST 标头:
- javascript - 在每个表格行中的 Prev Next 按钮上显示数据
- javascript - 多选下拉菜单 - 未在字段中添加 optgroup 选项之外
- java - Spring Boot ClientHttpRequestInterceptor 重新发送 401
- javascript - 使用jquery的列总和
- ios - 通过 PODS 添加的框架 -> 找不到框架 JumioCore
- php - 将模型内的模型和调用函数自动加载到整个项目中
- meteor - 在流星中拖放