php - mysql 从另一个选择查询值中减去一个选择查询

标签 php mysql laravel

我有两个 mysql 表,我已经使用这两个表构建选择查询,两个查询输出都是 inventory_transfer_details 表中数量的总和。我需要从“total_from”中减去“total_to”。请检查下面是 mysql 表。

库存转移 enter image description here

库存转移详情 enter image description here

下面是我的两个查询。

第一个查询:

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/

相关文章:

PHP mySQL - 替换字符串中的一些字符串

mysql - #2006 错误 : MySQL server has gone away when I try to drop a database

mysql - 在laravel中使用unique(),mysql是否正确运行onDelete Cascade?

linux - laravel 500 内部服务器错误?

php - 创建 CSV 上传到 Mysql

php - 在 php 的下一页中发布 id

mysql - 如何使用MySQL读取文本文件并在表中描述?

php - 将查询结果插入到 codeigniter 中的另一个查询中

php - PDO::execute() 对我来说是一个未定义的方法吗?

laravel - 我怎么能在 Laravel 中从另一份工作中分派(dispatch)一份工作