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 

今私が直面している問題は、TDTL に対応するレコードが存在しないような ci_txn_header にレコードが存在する場合、そのレコードはこのクエリによって返されないことです。

それを結果に含める方法はありますか? クエリで明示的な結合を使用すると、より良いことができると思うので、ユニオンを使用したくありません。

この問題を解決するために必要な結合を正確に教えてください。

Oracle DBを使用しています

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 に答える