COUNT() 和 Left Join 不起作用

COUNT() and Left Join not working

我在查询显示员工编号、名字、姓氏和每个员工的订单数时遇到问题。确保订单数列名称应为“OrderCount”。按 OrderCount 然后按员工 ID 订购。允许为空。

employee_data 包含列:Emp_IDF_NameL_Name

order_data 包含列:O_IDEmp_IDOrderNumber

这是我的查询:

Select order_data.Emp_ID, F_Name, L_Name, COUNT(employee_data.Emp_ID) as OrderCount
FROM order_data
LEFT JOIN employee_data
ON employee_data.Emp_ID = order_data.Emp_ID
GROUP BY order_data.Emp_ID
ORDER BY OrderCount

这些是我的表格:

employee_data

order_data

输出应该是:

但它给了我这个错误的输入。

聚合函数不能与查询中的其他字段一起使用。 您可以在子查询中使用它,如下所示:

Select order_data.Emp_ID, F_Name, L_Name, (select COUNT(employee_data.Emp_ID) from employee_data) as OrderCount
FROM order_data
LEFT JOIN employee_data
ON employee_data.Emp_ID = order_data.Emp_ID
GROUP BY order_data.Emp_ID
ORDER BY OrderCount

希望对您有所帮助.. :)

试试这个:

SELECT od.Emp_ID, ed.F_Name, ed.L_Name, COUNT(DISTINCT od.O_ID) AS OrderCount
FROM order_data od 
LEFT JOIN employee_data ed ON ed.Emp_ID = od.Emp_ID
GROUP BY od.Emp_ID
ORDER BY OrderCount

我认为您的 table 顺序错误:

Select ed.Emp_ID, ed.F_Name, ed.L_Name, COUNT(od.Emp_ID) as OrderCount
FROM employee_data ed LEFT JOIN
     order_data od
     ON ed.Emp_ID = od.Emp_ID
GROUP BY ed.Emp_ID
ORDER BY OrderCount;

大概您需要所有员工,以及他们的员工人数。在维护得当的数据库中,您不应该在订单 table.

上使用无效的员工 ID

您必须在 group by 子句中声明未在任何聚合函数中使用的列。尝试在 group by 子句中添加 'order_data.Emp_ID, F_Name, L_Name' 这些列。

正如其他人所说,如果您不想拥有 NULL 值并且不想知道没有订单的员工,您可以使用连接...如果您需要非现有员工的订单(但这可能有效),使用

SELECT
  od.Emp_ID, ed.F_Name, ed.L_Name, COUNT(od.Emp_ID) as OrderCount
FROM 
  order_data od
LEFT JOIN 
  employee_data ed ON ed.Emp_ID = od.Emp_ID
GROUP BY 
  od.Emp_ID
ORDER BY 
  OrderCount, od.Emp_ID 

您还缺少第二个 ORDER BY 值。

在您的查询中替换

ORDER BY OrderCount

ORDER BY order_data.Emp_ID

您的问题已解决....