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

MySQL查询求助:统计员工项目总工时与总收入关联错误

解决方案

直接给你能得到正确结果的SQL语句:

SELECT 
    r.idEmploye,
    e.nomEmploye,
    e.adresseCourriel,
    COALESCE(r.nbrHeures, 0) AS nbrHeures,
    COALESCE(r.somme_gagnée, 0) AS `somme gagnée`
FROM employe_ e
LEFT JOIN (
    SELECT 
        idEmploye,
        SUM(nbrHeure) AS nbrHeures,
        SUM(nbrHeure * PrixHeure) AS somme_gagnée
    FROM ressourcesprojet_
    GROUP BY idEmploye
) r ON e.idEmploye = r.idEmploye;

关键说明

  • 用LEFT JOIN是为了确保所有员工都能被显示——哪怕有的员工没参与任何项目,总工时和收入会显示为0(通过COALESCE处理NULL值);如果只需要统计有项目记录的员工,把LEFT JOIN换成INNER JOIN即可。
  • 关联条件必须用员工ID匹配:e.idEmploye = r.idEmploye,这是两张表唯一的关联逻辑,你之前用姓名匹配ID完全不符合数据关系,自然查不到结果。

你的三个查询错误分析

  1. 第一个查询:没加ON条件的内连接会产生笛卡尔积,也就是每个员工统计结果和所有员工信息强制匹配,导致数据大量重复,属于完全错误的写法。
  2. 第二个查询:子查询去掉GROUP BY后,SUM会把所有员工的工时、收入汇总成一行总数据,再和员工表连接时,每个员工都会重复这行总数据,根本不是按单个员工统计的结果。
  3. 第三个查询:用e.nomEmploye = r.idEmploye作为关联条件,姓名是字符串,ID是员工编号(类型或内容完全不匹配),两者没有对应关系,所以没有匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:35:39