mysql 减法联合问题

标签 mysql sum union subtraction

例如:我有 4 个表: 表1:项目

item_id    name   quantity
==========================
1          a      10
2          b      15

表 2:附加

add_id     name   quantity  item_id
===================================
1          c      5         1

表 3:item_out(这将减去项目数量)

item_id    quantity
==========================
1          10
2          5

表 4:additional_out(这将减去额外数量)

additional_id     quantity
==========================
1                 5         

我的问题是:我应该给出什么mysql查询才能得到这些结果?

item_ id   quantity   additional_id    additinal_quantity
=================================================
1          5          1                0
2          15

因为我使用mysql查询代码如下:

SELECT item_id, SUM(quantity - IFNULL(number,0)), additional_id, SUM(additional_quantity - IFNULL(additional_number,0))
FROM(
   SELECT a.item_id, a.quantity, b.additional_id, b.quantity AS additional_quantity, NULL AS number, NULL AS additional_number
   FROM table_1 a JOIN table_2 b ON some condition
   UNION
   SELECT NULL AS item_id , NULL AS quantity,... a.quantity AS number, b.quantity AS additional_number
   FROM table_3 a JOIN table_4 b ON condition
)AS T

由于第一个选择中的 SUM,它仅以 1 行结束。

最佳答案

试试这个:

SELECT item_ id, 
  (item.quantity - IFNULL(item_out.quantity,0)) AS quantity, 
  additional_id, 
  (IFNULL(a.quantity,0) - IFNULL(ao.quantity,0)) AS additional_quantity
FROM item
LEFT JOIN item_out
ON item.item_id = item_out.item_id
LEFT JOIN additional a
ON item.item_id = a.item_id
LEFT JOIN additional_out ao
ON a.addid = ao.additional_id

关于mysql 减法联合问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21086264/

相关文章:

java - 有效地迭代多个 Java Map 键集的联合

mysql - MySQL主从复制错误2003(HY000):无法连接到“192.168.1.X”上的MySQL服务器(111)

php - 在数据库中找到的 Set product new from date 在哪里?

PHP MySQL 函数单元测试

Python如何在其中也包含字符串的列表中获取数字总和

Mysql 联合时间 V.S.一个一个分开查询

php 站点未连接到 amazon rds 上的 mysql

MYSQL如何求和两个连接的字段

python - mysql sum 只产生 1

mysql - 结合两个接近相同的MySQL查询