在我的数据库中,表中有某些类别的食物,称为foodgroups。因此,我在不同的表中有与这些类别相关的美食。此外,我还创建了一个包含订单的表,以及一个“ orderfood”表,该表根据订单中有多少产品来定义订单。

我的目的是展示每种食品中销量最高的食品。因此,我想列出一列带有类别的栏目,然后在其旁边列出一列带有食品项的栏目,该栏目是该类别中最畅销的食品项。

Select  foodgroups.name, SUM(orderfood.fooditem_ID*orderfood.amount)

FROM    orders, orderfood, products, productgroups

Where   productgroups.productgroup_ID=products.productgroup_ID

AND     orders.order_ID=orderfood.order_ID

AND     products.product_ID=orderfood.product_ID

Group by productgroups.productgroup_ID`


到目前为止,它没有显示任何错误,但是我不知道如何获得一个列,该列中仅次于购买最多的食物是购买最多的食物。也许你可以帮我,谢谢:)

顺便说一句,我正在使用MySQL工作台。

http://sqlfiddle.com/#!2/4b79c/2

最佳答案

我认为您正在寻找MAX函数。将其添加到您的选择语句

Select  foodgroups.name, SUM(orderfood.fooditem_ID*orderfood.amount), max(orderfood.amount)

FROM    orders, orderfood, products, productgroups

Where   productgroups.productgroup_ID=products.productgroup_ID

AND     orders.order_ID=orderfood.order_ID

AND     products.product_ID=orderfood.product_ID

Group by productgroups.productgroup_ID`


那应该给你最有序的食物

09-29 22:46