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

PHP MySQL查询各活动注册会员总数问题求助

问题分析与SQL优化方案

原代码的核心问题是缺少分组逻辑,且查询了不必要的字段和关联表,导致无法按单个活动统计注册人数。以下是优化后的方案:

优化后的SQL代码

SELECT 
    activities.event_title AS `Event Title`,
    COUNT(participants.id) AS `Total Attendees`
FROM activities
LEFT JOIN participants ON participants.act_id = activities.id
WHERE activities.projects_id = '1001'
GROUP BY activities.id, activities.event_title, YEAR(activities.activity_date)
ORDER BY YEAR(activities.activity_date) DESC, activities.event_title;

关键优化点说明

  • 移除无用关联:原代码关联的projectcode表未在查询中使用任何字段,且已通过activities.projects_id过滤项目,直接移除该关联可提升查询效率。
  • 明确查询字段:仅选择预期输出需要的活动标题和统计字段,避免返回冗余数据。
  • 添加分组逻辑:通过GROUP BY按活动ID、标题及年份分组,确保每个活动单独统计注册人数。使用LEFT JOIN可保留无注册会员的活动(如需排除这类活动,可改为INNER JOIN)。
  • 精确统计:用COUNT(participants.id)替代COUNT(*),避免因关联空值导致的统计误差,仅统计实际存在的会员记录。
  • 排序优化:先按活动年份倒序,再按活动标题排序,保证结果顺序符合需求。

补充说明

如果你的活动标题字段不是event_title,请替换为实际表中对应的字段名(比如title)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:55:46