我有两个 mysql 表,我已经使用这两个表构建选择查询,两个查询输出都是 inventory_transfer_details 表中数量的总和。我需要从“total_from”中减去“total_to”。请检查下面是 mysql 表。
下面是我的两个查询。
第一个查询:
select sum(b.transfer_quantity) as total_to
from inventory_transfers as a
join inventory_transfer_details as b on a.id = b.inventory_transfer_id
where a.status="approved" and b.inventory_or_composite_id = '1' and a.to_warehouse_id = '2'
第二个查询:
select sum(b.transfer_quantity) as total_from
from inventory_transfers as a
join inventory_transfer_details as b on a.id = b.inventory_transfer_id
where a.status="approved" and b.inventory_or_composite_id = '1' and a.from_warehouse_id = '2'
我需要从查询 transfer_to 中减去 transfer_from
你有任何指南可以将这个最终查询转换为 Laravel 查询吗?
最佳答案
您可以组合这些查询并获得差异
SELECT
sum(
IF(a.to_warehouse_id = '2', b.transfer_quantity, 0)
) - sum(
IF(a.from_warehouse_id = '2', b.transfer_quantity, 0)
) as total
FROM
inventory_transfers AS a
JOIN inventory_transfer_details AS b ON a.id = b.inventory_transfer_id
WHERE
a.status = "approved"
AND b.inventory_or_composite_id = '1'
在 laravel 查询构建器中,这个查询可能看起来像
DB::table('inventory_transfers as a')
->select(DB::raw('sum(IF(a.to_warehouse_id = '2', b.transfer_quantity, 0)) - sum(IF(a.from_warehouse_id = '2', b.transfer_quantity, 0)) as total'))
->join('inventory_transfer_details as b', DB::raw('a.id'), '=', DB::raw('b.inventory_transfer_id'))
->where([
['a.status', '=', 'approved']
['b.inventory_or_composite_id', '=', 1]
])
->get()
关于php - mysql 从另一个选择查询值中减去一个选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629777/