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

如何编写正确SQL查询获取同part_id的qty总和?关联表查询问题

修复你的SQL查询以获取按零件分组的库存总量

嘿,你的查询没法正常跑主要是两个小问题,我来帮你修正并说明原因:

  • 字段拼写错误:你写的stock.statu应该是stock.status,和stock表定义的字段名不一致,数据库找不到这个字段肯定报错。
  • 缺少分组子句:用SUM()这类聚合函数时,必须告诉数据库按什么维度分组计算总和。另外,stock.idstock不该出现在SELECT里——同一个part_id可能对应多条库存记录,每条的idstock都不一样,分组后数据库不知道该返回哪一个,所以得去掉它。

修正后的正确查询

SELECT 
    `parts`.`id` AS part_id,
    `parts`.`partName`,
    SUM(`stock`.`qty`) AS total_qty
FROM `stock`
INNER JOIN `parts` ON `parts`.`id` = `stock`.`part_id`
WHERE `stock`.`status` = '1'
GROUP BY `parts`.`id`, `parts`.`partName`

简单解释:

  • 我们按parts.id(也就是stock表的part_id)和parts.partName分组,保证每个零件对应唯一的统计结果。
  • 给总和字段起了total_qty的别名,让结果更直观。
  • 修正了status的拼写错误,匹配表结构。

如果你确实需要展示每条库存的idstock,那得换个思路——因为同一个零件对应多条库存,你可以用GROUP_CONCAT()把所有相关的idstock合并成一个列表,示例如下:

SELECT 
    `parts`.`id` AS part_id,
    `parts`.`partName`,
    GROUP_CONCAT(`stock`.`idstock`) AS related_stock_ids,
    SUM(`stock`.`qty`) AS total_qty
FROM `stock`
INNER JOIN `parts` ON `parts`.`id` = `stock`.`part_id`
WHERE `stock`.`status` = '1'
GROUP BY `parts`.`id`, `parts`.`partName`

这样就能同时得到每个零件的总库存数量,以及对应的所有库存记录ID了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:22:46