SQL隐式加入显式连接

时间:2013-03-04 07:04:25

标签: sql database oracle 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, 
       ci_txn_detail TDTL, 
WHERE  THDR.txn_header_id = TDTL.txn_header_id 

现在我面临的问题是,如果ci_txn_header中存在记录,导致TDTL中没有相应的记录,则此查询不会返回该记录。

我可以通过哪种方式将结果包含在我的结果中吗?我不想使用union,因为我认为通过在查询中使用显式连接可以做得更好。

请帮我确切地说明需要哪个联接来解决这个问题。

使用Oracle DB

1 个答案:

答案 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