2017-09-19 10 views
0

私は2つのテーブル、在庫と取引、在庫を持っています在庫アイテムについての詳細が含まれています。取引は、PKを介してリンクされ、数量の品目を品目に記録します。Whereを使用して複数のテーブルからSQL SELECTクエリの複数の計算?

私は、インベントリ詳細を表示するだけでなく、インベントリ行​​ごとにトランザクション合計も表示するテーブルを取得しようとしています。

現在、私が働いている何がある:

SELECT Inventory.InvID, 
sum(case when ITT.TransactionTypeName = 'GoodsIn' then Quantity else 0 end) As Goods_In 
sum(case when ITT.TransactionTypeName = 'GoodsOut' then Quantity else 0 end) As Goods_Out 
FROM 
Inventory 
INNER JOIN Transactions As IT ON Inventory.InvID = IT.InvID 
INNER JOIN TransactionType AS ITT ON IT.TransactionType = ITT.TransactionTypeID 
GROUP BY ITT.TransactionTypeName 

私は別のポストから、様々なテストや問題によっては、それが正しいデータを提供するように見えることはできませんスタックオーバーフローの上にこれを見つけました。私はいくつかの質問持っている。これにより

  • は、上記のようなクエリで計算を実行することが可能ですか?
  • 誰かがこの特定のクエリを解決する正しい方向に向けることができますか?
  • このタスクで正しい結合を使用していますか?ユニオンが必要ですか?さらにテストを通じて

編集

私はこの作業を取得しなかったし、それは私自身の愚かな間違いでした。私は、これは、しかし、何の取引を持っていない値(例えば空や未確認項目)

答えて

0
を返すように表示されません

EDIT2(この場合はInventory.InvIDに)共通フィールドでグループそれに持っていました

だから私は基本的に自分の質問の一部(これは確かに可能)、エラーが発生しました

エラーコード:1055. SELECTリストの式#1はGROUP BY句ではなく、非集約列 'インベントリ.InvID 'はGの列に機能的に依存しませんROUP BY句;これはsql_mode = only_full_group_by 0.000秒と互換性がありません

これはGroup By Clauseをテストするために私を導きました。私は、結合されたテーブル全体で共通フィールドを使用する必要があると判断し、正しいデータを得ることができました。

関連する問題