You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并sales_products表同产品行得到统计结果?Laravel多表查询问题

问题原因

当前的查询语句仅返回单条销售记录的明细数据,未添加分组聚合逻辑,因此无法实现按产品维度汇总的需求。

修改后的查询代码

$invoiceDetails = DB::table('products')
    ->join('sales_products', 'sales_products.product_id', '=', 'products.id')
    ->select(
        'products.product_name',
        DB::raw('SUM(sales_products.quantity) as total_quantity'),
        DB::raw('SUM(sales_products.quantity * sales_products.sales_price) as total_sales')
    )
    ->where('sales_products.invoice_id', '=', $id)
    ->groupBy('products.id', 'products.product_name')
    ->get();

关键修改说明

  • 移除了明细字段sales_products.quantity、sales_products.sales_price的查询,替换为聚合计算逻辑:
    • 用SUM(sales_products.quantity)统计单产品的总销量
    • 用SUM(sales_products.quantity * sales_products.sales_price)统计单产品的总销售额
  • 新增groupBy分组规则,按产品ID和产品名称分组,保证同一产品的所有销售记录聚合为一条结果
  • 同时添加products.id到分组字段是为了兼容数据库ONLY_FULL_GROUP_BY模式的校验,避免语法报错

返回结果说明

查询返回的每条结果对应一个产品的汇总数据,你可以通过total_quantity获取总销量,total_sales获取总销售额,完全匹配你需要的输出要求。

内容的提问来源于stack exchange,提问作者Hola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 12:24:05