如何修复这个涉及 FROM 子句的语法错误?

时间:2021-03-31 23:39:24

标签: mysql

我正在处理一个简单的问题集,但似乎找不到产生相同错误的问题:“FROM 子句中的语法错误”。

问题涉及在这一刻使用各种数据库来查找“哪个员工销售的产品最多?”

这是我的代码

SELECT (Employees.FirstName + Employees.LastName) as Employee, SUM(Orders.Quantity)
FROM Employees, Orders
JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID
JOIN OrderDetails ON Orders.OrderID=OrderDetails.OrderID
GROUP BY Employee
ORDER BY max(SUM(Quantity)) DESC;

如果我误解了某些语法的使用,请告诉我。我还在学习。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您使用 ANSI JOIN 时,您不会在 FROM 子句中列出所有表。只需列出第一个表,其他表在 JOIN 中。

您也不能将聚合函数嵌套为 MAX(SUM(Quantity))。如果要查找销量最高的员工,请按数量订购,然后使用 TOP 1 获取第一行。

无需加入 OrderDetails,因为您没有使用该表中的任何内容。

查询应该是:

SELECT TOP 1 (Employees.FirstName + Employees.LastName) as Employee, SUM(Orders.Quantity) AS Quantity
FROM Employees
JOIN Orders ON Orders.EmployeeID=Employees.EmployeeID
GROUP BY Employee
ORDER BY Quantity DESC;

请注意,如果销量最高的商品并列平局,则只会显示其中之一。获取所有这些更复杂,因为您需要第二个查询才能获得最大值。见sql HAVING max(count()) return zero rows