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

MySQL:关联mb_branch统计指定日期mb_item行数,无数据显示0

解决分店item统计显示不全的问题

原SQL存在的问题

  • WHERE date(it.dtime)=?会过滤掉没有对应日期item数据的分店——左连接后无匹配的分店对应的it.dtime为NULL,该条件无法成立,导致仅显示有数据的分店
  • GROUP BY中包含date(it.dtime)属于冗余分组,会干扰结果展示逻辑

修正后的SQL代码

SELECT
    br.*,
    br.name,
    COUNT(it.id) AS nit,
    sl.staff1 AS st1,
    sl.staff2 AS st2,
    sl.staff3 AS st3,
    sl.money AS money
FROM mb_branch br
LEFT JOIN mb_item it 
    ON it.uid = br.uid 
    AND DATE(it.dtime) = ?  -- 把日期筛选条件移到左连接的ON子句中
LEFT JOIN mb_sell sl 
    ON sl.uid = br.uid
    -- 若需关联指定日期的sell记录,可在此添加 AND DATE(sl.dtime) = ?
GROUP BY br.uid, br.name, sl.staff1, sl.staff2, sl.staff3, sl.money
-- 注:MySQL 5.7+开启ONLY_FULL_GROUP_BY时,GROUP BY需包含所有非聚合字段

关键调整说明

  1. 日期条件移至JOIN子句:左连接时只会匹配指定日期的item记录,无匹配的分店仍会被保留,COUNT(it.id)会自动统计为0(COUNT函数会忽略NULL值)
  2. 优化分组逻辑:仅按分店唯一标识及需要展示的非聚合字段分组,避免冗余分组导致的结果异常
  3. sell表关联优化:如果分店对应多条sell记录,建议用子查询或聚合函数(如MAX)获取唯一数据,防止行数倍增导致item统计数失真

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:23