我的下表链接如下:

http://i.stack.imgur.com/UlxDe.png

我想列出所有为每份价格都具有2个最高值的菜单项选择菜单项的所有时间。每份价格由单价除以估计份数计算得出。对于每个选定的项目,应显示项目编号,事件编号,房间编号,交货时间和单位计数。

我的查询如下:

 SELECT M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
 FROM MENUITEM M, SELECTEDITEM S
 WHERE MAX(M.UNIT_PRICE / M.EST_SERVINGS);


这是我唯一能提出的查询,而且还远远不够。

最佳答案

首先,您需要将表连接在一起。猜测联接键是什么,但是让我们说ItemNo对两个表都是通用的。然后,您要按比例对行进行排序并选择两个最大值:

SELECT M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
FROM MENUITEM M JOIN
     SELECTEDITEM S
     ON M.ITEMNO = S.ITEMNO
ORDER BY M.UNIT_PRICE / M.EST_SERVINGS DESC
LIMIT 2;


limit 2是MySQL的语法。在SQL Server中,应改为使用SELECT TOP 2

编辑:

在SQL Server中,语法为:

SELECT TOP 2 M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
FROM MENUITEM M JOIN
     SELECTEDITEM S
     ON M.ITEMNO = S.ITEMNO
ORDER BY M.UNIT_PRICE / M.EST_SERVINGS DESC;

关于mysql - 从计算值返回两个最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22132615/

10-08 22:34