sum 两张表 mysql,mysql - 在mysql中加入5个表以在同一查询中显示两个不同表的两个SUM列 - SO中文参考 - www.soinside.com...

我正在一个项目中,以控制用于不同任务的项目的库存。每个任务都有一个或多个仓库,每个仓库接收完成任务所需的物料输入,最后用于该任务的实际物料数量在used_items表中。

TABLEStask:

taskId | name

-----------------

warehouse:

warehous_id | taskId

----------------------

inputs:

itemId | qty | warehouse_id

--------------------------------

items:

itemId | itemName

--------------------

used:

itemId | qty | taskId

-----------------------------

我正在尝试使用以下查询来获取某些任务的项目的报告:

[QUERY1:在单独任务中使用的项目(例如任务1):SELECT t.taskId

, it.itemId

, it.itemName

, SUM(u.qty) total_used

FROM items it

, task t

, used u

WHERE it.itemId = u.itemId

AND t.taskId = u.taskId

AND t.taskId = 1

GROUP

BY it.itemId

此查询给出以下结果:taskId itemId itemName total_used

1 2 item2 10

1 3 item3 1

1 4 item4 6

1 5 item5 6

1 6 item6 2

1 8 item8 9

1 9 item9 4

1 10 item10 7

此结果正确。使用了8个项目。

QUERY2:输入一个单独任务的项目(例如任务1):SELECT t.taskId

, it.itemId

, it.itemName

, SUM(ip.qty) total_input

FROM items it

, task t

, inputs ip

, warehouse w

WHERE it.itemId=ip.itemId

AND t.taskId=w.taskId

AND w.warehouseId=ip.warehouseId

AND t.taskId=1

GROUP

BY it.itemId

此查询给出以下结果:taskId itemId itemName total_input

1 1 item1 24

1 2 item2 26

1 3 item3 21

1 4 item4 18

1 5 item5 22

1 6 item6 3

1 7 item7 17

1 8 item8 12

1 9 item9 17

1 10 item10 20

此结果正确。 10个输入项目。

两个查询都会生成正确的结果。但是,当我尝试将两个查询组合在一起以显示两列以及每列的SUM时,问题就来了,结果不正确。

组合查询:SELECT t.taskId

, it.itemId

, it.itemName

, SUM(ip.qty) total_input

, SUM(u.qty) total_used

FROM items it

, task t

, inputs ip

, warehouse w

, used u

WHERE it.itemId=ip.itemId

AND t.taskId=w.taskId

AND w.warehouseId=ip.warehouseId

AND u.itemId=it.itemId

AND u.taskId=t.taskId

AND t.taskId=1

GROUP

BY it.itemId

结果:taskId itemId itemName total_input total_used

1 2 item2 52 90

1 3 item3 21 7

1 4 item4 18 24

1 5 item5 22 30

1 6 item6 3 4

1 8 item8 12 27

1 9 item9 17 20

1 10 item10 20 35

这会产生错误的结果,首先是因为它仅显示8列而不是10列,而且总数是错误的。我已经搜索并尝试了很多有关如何正确执行此操作的方法,但是我只发现了子查询或带有两个表的左联接的示例,这比较简单,但是当它带有5个涉及所有关系的表时,我没有知道怎么做。

我感谢您能给我的任何帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值