例如:我有 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/