3

我有一个简单的查询:

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 中不存在相应的记录,则该查询不会返回该记录。

有没有办法可以将其包含在我的结果中?我不想使用联合,因为我认为通过在查询中使用显式连接可以获得更好的效果。

请帮助我确定解决此问题所需的确切连接。

我正在使用 Oracle 数据库

4

1 回答 1

2

使用左连接

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 
于 2013-03-04T07:08:26.410 回答