2017-09-19 33 views
0

我有2个表,库存和交易,库存包含有关物品详情。交易通过PK进行链接,以记录货物的进出数量。多个计算从多个表?

我试图获得,不仅显示库存明细的表,但也该交易总计为每个广告行。

目前我所用的工作是:

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 

我发现这个堆栈溢出的另一篇文章,并通过各种测试和问题似乎无法得到它提供正确的数据。

有了这个,我有几个问题:

  • 是否可以执行一个查询计算,如上面?
  • 有人点我在正确的方向来解决这个特定的查询?
  • 我使用正确的加入了这项任务?和/或是否为联盟要求?

编辑

经过进一步的测试我没有得到这方面的工作,这是我自己的愚蠢的错误。我不得不集团是通过公共字段(在这种情况下Inventory.InvID)

EDIT2

然而,这并不似乎返回没有交易值(例如空或未选中的项)

回答

0

所以我基本上回答了我自己的问题(这确实是可能的)的一部分,我得到一个错误

错误代码:1055. SELECT列表的表达式#1不在GROUP BY子句中,并包含nonaggregated列'Inventory .InvID',它在功能上不依赖于G中的列ROUP BY子句;这是不兼容的sql_mode = only_full_group_by 0.000秒

这让我考出Group By子句。我确定我需要在Joined表中使用Common Field,这导致我得到正确的数据。