2017-01-16 21 views
-2

3つのテーブルを結合する必要があります。 :ORDER_ID、PRODUCT_ID、数量SQL複数の条件に3つのテーブルを結合する

表B - - - ORDER_ID、TRANSACTION_ID

表C TRANSACTION_ID、PRODUCT_ID、PRODUCT_PRICE

私はのようにそれらを結合する彼らは

表Aが含まれています

LEFT JOIN table_B b on b.order_id = a.order_ID 

LEFT JOIN table_C on c.product_id = a.product_ID AND c.transaction_ID = b.transaction_ID 

表Cが2つのテーブルにリンクすると、product_idに一致することなくtransaction_IDと一致する場合にnullレコードが作成されます。私が量を合計すると、それはオフになります。これを解決する最も簡単な方法は何ですか?あなたが行うことができ、あなたの当面の問題については

+2

データ、完全なクエリ、実際の出力、予想される出力を含めてください。 – shmosel

+1

注文と取引の違いは何ですか?製品が両方に出現する可能性は奇妙に思えますか? – Strawberry

答えて

0

、:

select sum(case when b.order_id is not null and c.product_id is not null 
       then a.qty 
      end) 
from a left join 
    b 
    on b.order_id = a.order_ID left join 
    c 
    on c.product_id = a.product_ID and 
     c.transaction_ID = b.transaction_ID; 

あなたは非常に奇妙なデータモデルを持っています。数量が取引または製品レコードに含まれていてはなりませんか?いずれにしても、caseはあなたが求めた特定の質問を解決するはずです。

+0

こんにちはお返事ありがとうございます。実際には私は7つのテーブルからのデータを組み合わせるクエリとして質問を簡素化しましたが、どのようにしても、追加の選択と左の結合でそれを行うことができました。 –

関連する問題