SQL多表关联查询无法获取emp表员工名称问题求助
问题解决方案
排查步骤
- 先核对表名与字段名的准确性
你需求描述中提到的两张表为emp、emp purchase,但给出的SQL使用的是sales_emp、sales_sum1,请先确认SQL中表名和你实际使用的表一致。同时核对员工表中姓名字段的真实名称,是否和SQL中写的Emp_name存在拼写、大小写差异,比如实际字段名是emp_name、name等,存在错误修正为正确字段名即可。 - 优化分组逻辑避免异常
仅按员工姓名分组可能会出现重名员工数据被合并的问题,同时也可能导致部分数据库因分组规则严格出现字段返回异常,建议补充员工id作为分组条件。 - 排查关联逻辑问题
你当前使用的INNER JOIN仅会返回两张表empid完全匹配的记录,如果返回结果中Emp_name列为空,说明匹配到的empid在员工表中没有对应的有效姓名字段值,可排查员工表对应行的数据存储情况。
修正后参考SQL
如果你实际使用的是SQL中写的sales_emp和sales_sum1表,可使用以下语句:
SELECT e.Emp_name AS employee_name, COUNT(*) AS purchase_count, SUM(s.sales_amount) AS total_sales_amount FROM sales_emp e INNER JOIN sales_sum1 s ON e.empid = s.empid GROUP BY e.empid, e.Emp_name ORDER BY total_sales_amount DESC LIMIT 3;
如果你实际使用的是需求中提到的emp和emp purchase表,可使用以下语句:
SELECT e.emp_name AS employee_name, SUM(p.purchase_amount) AS total_purchase_amount FROM emp e INNER JOIN emp_purchase p ON e.empid = p.empid GROUP BY e.empid, e.emp_name ORDER BY total_purchase_amount DESC LIMIT 3;
内容的提问来源于stack exchange,提问作者BABU
相关产品推荐
相关产品推荐

