【发布时间】:2013-03-04 10:50:08
【问题描述】:
我有一个问题:
SELECT THDR.FILENAME,
SOURCE.TXN_SOURCE_CD AS TXN_SOURCE_CD,
SOURCE.DESCR as TXN_SOURCE,
THDR.TXN_HEADER_ID,
THDR.TXN_HEADER_EXT_ID,
THDR.TXN_HEADER_DTTM,
THDR.UPLOAD_DTTM,
L.DESCR,
NVL(SUM(TDTL.TXN_VOL), 0) TOTAL_VOLUME
FROM ci_lookup_val_l L,
ci_txn_source_l source,
CI_TXN_HEADER THDR
LEFT JOIN ci_txn_detail TDTL
ON THDR.TXN_HEADER_ID = TDTL.TXN_HEADER_ID
WHERE TRIM(SOURCE.TXN_SOURCE_CD) = TRIM(TDTL.TXN_SOURCE_CD)
AND SOURCE.LANGUAGE_CD = 'ENG'
AND L.FIELD_NAME = 'TXN_HEADER_STATUS'
AND THDR.BO_STATUS_CD = L.FIELD_VALUE
AND L.LANGUAGE_CD = 'ENG'
AND THDR.TXN_HEADER_ID='22222228'
GROUP BY THDR.FILENAME,SOURCE.DESCR,THDR.TXN_HEADER_ID,THDR.TXN_HEADER_EXT_ID,THDR.TXN_HEADER_DTTM,THDR.UPLOAD_DTTM,L.DESCR,SOURCE.TXN_SOURCE_CD
如您所见,此查询有多个隐式连接和 1 个显式连接。这是我第一次使用这种查询,但它可以编译。但是,此查询中的左连接不起作用。也就是说,如果我在 TDTL 中没有与 THDR 上的记录对应的记录,则查询不会返回任何行。
你能帮我修一下吗?
【问题讨论】:
-
如果你正确阅读问题,你会发现查询没有给出任何错误信息,而是获取了错误的数据!
-
删除 WHERE,验证您的 JOINS 确实按预期加入,然后一次将其放回一个条件。如果没有数据样本以及预期结果和实际结果之间的详细比较,任何人都无法回答这个问题。