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

如何关联查询Pets、Owners、Stores三张表统计各门店对应的宠物总数

可以实现该查询需求,不需要使用UNION,核心用LEFT JOIN保留全部门店记录、修正关联条件即可,正确SQL如下:

SELECT 
  s.storename,
  COUNT(p.id) AS `Total Pets`
FROM Stores s
LEFT JOIN Owners o ON s.id = o.store
LEFT JOIN Pets p ON o.id = p.owner
GROUP BY s.id, s.storename

你之前的写法存在三个核心问题:

  • 关联类型选择错误:使用INNER JOIN做关联会自动过滤没有对应店主、没有对应宠物的门店,因此无法得到宠物数量为0的Corner门店记录,替换为LEFT JOIN即可保留所有门店数据
  • 关联逻辑错误:Stores表和Owners表的关联字段是Stores.id = Owners.store,而非Stores.id = Owners.id;Pets表和Owners表的关联字段是Pets.owner = Owners.id,你之前直接把Pets和Stores做关联,关联链错误导致统计结果不符合预期
  • 统计逻辑错误:统计宠物总数直接统计Pets表的主键id即可,COUNT函数会自动忽略NULL值,没有对应宠物的门店会自动返回0,无需多余的DISTINCT嵌套逻辑

如果你当前运行结果和你给出的示例结果数值不符,是因为你提供的示例表仅为部分截取数据,上述SQL逻辑完全匹配需求,替换到真实全量数据中即可得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:15:01