使用Where在多个表的SQL SELECT查询中进行多次计算?

时间:2017-09-19 12:55:31

标签: mysql select

我有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

我在另一篇帖子的Stack Overflow上发现了这个问题,通过各种测试和问题似乎无法提供正确的数据。

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

  • 是否可以在诸如Above?
  • 之类的查询中执行计算
  • 有人能指出我正确的方向来解决这个特定的查询吗?
  • 我是否正在使用正确的连接执行此任务?和/或是否需要工会?

修改

通过进一步的测试我确实得到了这个工作,这是我自己的愚蠢错误。我不得不按公共字段(在本例中为Inventory.InvID)对其进行分组

EDIT2

但是,这似乎不会返回没有事务的值(例如Empty或Unchecked items)

1 个答案:

答案 0 :(得分:0)

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

错误代码:1055。SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列' Inventory.InvID'它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by 0.000秒

不兼容

这导致我测试了Group By Clause。我确定我需要在连接表中使用公共字段,这导致我获得了正确的数据。