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

解决SQL多表关联统计中无法显示零行程记录导游的问题

解决方案:统计指定区域当月所有导游的行程数(含无行程记录)

原查询的核心问题是从tripguide表发起关联,这直接导致没有任何行程记录的导游无法被纳入结果。另外,WHERE子句里的条件会过滤掉左关联后产生的NULL行,进一步排除了无行程的导游。

修正后的SQL如下:

SELECT 
    g.id, 
    g.name, 
    g.area, 
    COUNT(tg.id) AS work 
FROM guide AS g
LEFT JOIN tripguide AS tg 
    ON g.id = tg.guide_id 
    AND tg.status = 1
LEFT JOIN trips AS t 
    ON tg.trip_id = t.id 
    AND t.area = '1' 
    AND t.tripdate >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY) 
    AND t.tripdate <= LAST_DAY(CURRENT_DATE)
WHERE g.area = '1'
GROUP BY g.id, g.name, g.area
ORDER BY work ASC;

关键修改说明:

  • 主表切换为guide:先筛选指定区域g.area='1'的所有导游,确保哪怕没有行程记录的导游也会出现在结果中。
  • 将过滤条件移至JOIN的ON子句:原WHERE中的tg.status=1、行程日期范围、t.area='1'这些条件,放到对应的关联ON里,避免过滤掉左关联后为空的行(也就是无行程的导游)。
  • 统计逻辑调整:用COUNT(tg.id)统计行程数——当导游没有关联的tripguide记录时,tg.id为NULL,COUNT会自动忽略NULL值返回0,完美符合需求。
  • 分组与排序:按导游的唯一标识和信息分组(符合SQL标准,避免分组歧义),最后按work升序排序,方便直接按行程数从少到多分配工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:30:14