Mysql 将嵌套的MY_SQL查询转换为单视图查询

Mysql 将嵌套的MY_SQL查询转换为单视图查询,mysql,Mysql,我有以下表格: CashiersInShifts(ShiftNun,ShiftDAte,CashierNum), Oreders(OrderNum,Payment,CustomerNum,ShiftNum,ShiftDAte,CashierNum), Course(CourseNum,Name,Price), CourseInOrder(OrderNum,CourseNum,Quantity), Employee(EmployeeNum,Name,BirthDay). 我要转换以下查询: SE

我有以下表格:

CashiersInShifts(ShiftNun,ShiftDAte,CashierNum),
Oreders(OrderNum,Payment,CustomerNum,ShiftNum,ShiftDAte,CashierNum),
Course(CourseNum,Name,Price),
CourseInOrder(OrderNum,CourseNum,Quantity),
Employee(EmployeeNum,Name,BirthDay).
我要转换以下查询:

SELECT EmployeeNum, Name, MAX(TotalSales)/10 AS Commission
FROM (SELECT OrderNum, CS.ShiftDate, CS.CashierNum AS EmployeeNum, CO.CourseNum, C.Price, SUM(C.Price) AS TotalSales
FROM CashiersInShifts CS NATURAL JOIN Orders O NATURAL JOIN CoursesInOrder CO NATURAL JOIN Course C
WHERE CS.ShiftDate = DATE_SUB(CURDATE(),INTERVAL 1 DAY)
GROUP BY CS.CashierNum) T1 NATURAL JOIN Employee;
进入一个视图查询。
感谢您的帮助

您可以通过选择中的相关子查询来完成此操作。我建议您不要使用自然连接-如果您希望避免意外错误,最好了解您正在连接的列。但是,您的问题是关于您的查询,因此我将保留自然加入:


请注意,这将返回所有员工的行。如果你想把员工限制在收银员的范围内,你可以加上佣金不为空。

请阅读:你写的东西真的很难理解。。。你可以把你的代码放在正确的语法中,这样我们就可以阅读你的代码…格式化你的问题,如果你需要帮助,提供足够详细的信息。非常感谢!如果我只想要佣金最高的收银员?我需要做什么?按佣金说明订购,并选择您想要的有限制的号码。但我不知道有多少出纳员会有相同的佣金…我如何限制我的结果?我需要有最高佣金的出纳员,如果有10个出纳员有相同的最高佣金,我需要我所有的10个出纳员result@user3590789 . . . 在视图中,必须在where子句中使用子查询:where commission=select maxcommission from。凌乱,但可能。@user3590789。如果答案是有用的,你应该考虑投票或接受答案,尽管你现在没有足够的声誉来投票。
SELECT e.EmployeeNum, e.Name, 
       (SELECT SUM(C.Price) AS TotalSales
        FROM CashiersInShifts CS NATURAL JOIN
             Orders O NATURAL JOIN
             CoursesInOrder CO NATURAL JOIN
             Course C
        WHERE CS.ShiftDate = DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND
              CS.CaashierNum = e.EmployeeNum
        ORDER BY TotalSales DESC
        LIMIT 1
       ) / 10 as Commission
FROM Employee e;