我有一个简单的查询:
SELECT THDR.filename,
THDR.txn_header_id,
THDR.txn_header_ext_id,
THDR.txn_header_dttm,
THDR.upload_dttm,
Nvl(Sum(TDTL.txn_vol), 0) TOTAL_VOLUME,
FROM ci_txn_header THDR,
ci_txn_detail TDTL,
WHERE THDR.txn_header_id = TDTL.txn_header_id
现在我面临的问题是,如果ci_txn_header中存在记录,导致TDTL中没有相应的记录,则此查询不会返回该记录。
我可以通过哪种方式将结果包含在我的结果中吗?我不想使用union,因为我认为通过在查询中使用显式连接可以做得更好。
请帮我确切地说明需要哪个联接来解决这个问题。
使用Oracle DB
答案 0 :(得分:2)
使用 LEFT JOIN
SELECT THDR.filename,
THDR.txn_header_id,
THDR.txn_header_ext_id,
THDR.txn_header_dttm,
THDR.upload_dttm,
Nvl(Sum(TDTL.txn_vol), 0) TOTAL_VOLUME,
FROM ci_txn_header THDR
LEFT JOIN ci_txn_detail TDTL
ON THDR.txn_header_id = TDTL.txn_header_id