COUNT() 和 Left Join 不起作用
COUNT() and Left Join not working
我在查询显示员工编号、名字、姓氏和每个员工的订单数时遇到问题。确保订单数列名称应为“OrderCount”。按 OrderCount 然后按员工 ID 订购。允许为空。
employee_data 包含列:Emp_ID
、F_Name
、L_Name
order_data 包含列:O_ID
、Emp_ID
、OrderNumber
这是我的查询:
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
您的问题已解决....
我在查询显示员工编号、名字、姓氏和每个员工的订单数时遇到问题。确保订单数列名称应为“OrderCount”。按 OrderCount 然后按员工 ID 订购。允许为空。
employee_data 包含列:Emp_ID
、F_Name
、L_Name
order_data 包含列:O_ID
、Emp_ID
、OrderNumber
这是我的查询:
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
您的问题已解决....