我想从PF_OUTPUT返回所有值,其中令牌ID等于“AdmissionInfo”以及PF_RESULTS的匹配结果仅用于PAT_SEQ = 105566168。
我已经查看了其他一些问题,并且我在Left join where子句中包含了null语句,但它仍然只是返回匹配的值。
SELECT CCDEV.PF_OUTPUT.TOKEN_NAME,
CCDEV.PF_OUTPUT.DISPLAY_SEQ,
CCDEV.PF_OUTPUT.RES_SEQ,
CCDEV.PF_OUTPUT.LABEL_SEQ,
CCDEV.PF_OUTPUT.DISPLAY_RESULT_NAME,
CCDEV.PF_OUTPUT.OUTPUT_RESULT_NAME,
CCDEV.PF_OUTPUT.OUTPUT_FIELD_NAME,
PF_RESULTS.PERFORM_DDT,
PF_RESULTS.CHART_DDT,
PF_RESULTS.STAFF_SEQ,
PF_RESULTS.RESULT_VALUE,
PF_RESULTS.STATUS,
PF_RESULTS.PF_RESULTS_SEQ,
PF_RESULTS.PAT_SEQ,
PF_RESULTS.PF_RESULT_SEQ,
PF_RESULTS.RECORD_VERSION,
PF_RESULTS.LABEL_SEQ AS LABEL_SEQ1
FROM CCDEV.PF_OUTPUT
LEFT JOIN PF_RESULTS
ON CCDEV.PF_OUTPUT.LABEL_SEQ = PF_RESULTS.LABEL_SEQ
AND CCDEV.PF_OUTPUT.RES_SEQ = PF_RESULTS.RES_SEQ
WHERE (CCDEV.PF_OUTPUT.TOKEN_NAME = 'AdmissionInfo'
AND PF_RESULTS.PAT_SEQ = 105566168)
OR (CCDEV.PF_OUTPUT.TOKEN_NAME = 'AdmissionInfo'
AND PF_RESULTS.PAT_SEQ IS NULL)
ORDER BY CCDEV.PF_OUTPUT.TOKEN_NAME,
CCDEV.PF_OUTPUT.DISPLAY_SEQ
答案 0 :(得分:1)
将PF_RESULTS.PAT_SEQ = 105566168行从您的where条件移动到您的ON子句。
SELECT CCDEV.PF_OUTPUT.TOKEN_NAME,
CCDEV.PF_OUTPUT.DISPLAY_SEQ,
CCDEV.PF_OUTPUT.RES_SEQ,
CCDEV.PF_OUTPUT.LABEL_SEQ,
CCDEV.PF_OUTPUT.DISPLAY_RESULT_NAME,
CCDEV.PF_OUTPUT.OUTPUT_RESULT_NAME,
CCDEV.PF_OUTPUT.OUTPUT_FIELD_NAME,
PF_RESULTS.PERFORM_DDT,
PF_RESULTS.CHART_DDT,
PF_RESULTS.STAFF_SEQ,
PF_RESULTS.RESULT_VALUE,
PF_RESULTS.STATUS,
PF_RESULTS.PF_RESULTS_SEQ,
PF_RESULTS.PAT_SEQ,
PF_RESULTS.PF_RESULT_SEQ,
PF_RESULTS.RECORD_VERSION,
PF_RESULTS.LABEL_SEQ AS LABEL_SEQ1
FROM CCDEV.PF_OUTPUT
LEFT JOIN PF_RESULTS
ON CCDEV.PF_OUTPUT.LABEL_SEQ = PF_RESULTS.LABEL_SEQ
AND CCDEV.PF_OUTPUT.RES_SEQ = PF_RESULTS.RES_SEQ
AND PF_RESULTS.PAT_SEQ = 105566168
WHERE (CCDEV.PF_OUTPUT.TOKEN_NAME = 'AdmissionInfo')
OR (CCDEV.PF_OUTPUT.TOKEN_NAME = 'AdmissionInfo'
AND PF_RESULTS.PAT_SEQ IS NULL)
ORDER BY CCDEV.PF_OUTPUT.TOKEN_NAME,
CCDEV.PF_OUTPUT.DISPLAY_SEQ
当您在LEFT联接的右表中包含一列时,您基本上消除了LEFT联接并使其成为内连接。除非你说RIGHTTable.column在哪里是空的。
答案 1 :(得分:1)
看起来你在where子句中使用了左连接表。这有效地使它成为内连接,因为任何不存在的记录总是会产生错误。
除非在where子句中的检查包括'is null'检查。
您应该将PF_RESULTS.PAT_SEQ = 105566168
支票移至on
的{{1}}条款以解决此问题。