如何根据计数返回项目

时间:2012-11-24 13:20:04

标签: mysql

我正在尝试从order表中返回属于orders的最有天赋的项目。目前,这将返回任何有天赋的物品,我想要它做的是检查该物品在返回之前已被多次赠送,作为一种检查礼物不是一次性的方式而且它实际上是一个受欢迎的礼物选择。

这就是我目前的情况:

SELECT Item_Type, Item_Desc, item_Cost 
FROM rbickers.Item

LEFT join rbickers.Basket 
ON Item.Item_id = Basket.theItem_id

LEFT join rbickers.order
on basket.ord_ID = Order.order_ID

LEFT join rbickers.Session 
on Order.Session_id = Session.Ses_id 

WHERE Order.order_isGift = "true"
order by item_type

3 个答案:

答案 0 :(得分:2)

你可能正在寻找GROUP BY和HAVING:

SELECT Item_Type, Item_Desc, Item_Cost 
FROM Item
JOIN Basket ON theItem_id = Item_ID
JOIN Order ON Order_ID = Ord_ID
WHERE Order_isGift = "true"
GROUP BY Item_ID
HAVING count(1) > 1

答案 1 :(得分:1)

你有没有考虑过另一张桌子,因为他们有天赋,只计算礼物的数量?然后,您可以对Times_Gifted进行排序,这样可以在后端保存一些操作。

否则,如果是一次性计算,可能是这样的

SELECT count(*) FROM `tablename`

根据您的需要使用适当的其他过滤器(来自http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

祝你好运!

答案 2 :(得分:0)

你需要总结每个项目的天赋次数,先将结果排序为我的最大计数,然后只选择第一行:

SELECT Item_Type, Item_Desc, item_Cost, sum(Basket.qty) as total_ordered
FROM rbickers.Item
LEFT join rbickers.Basket ON Item.Item_id = Basket.theItem_id
LEFT join rbickers.order on basket.ord_ID = Order.order_ID
LEFT join rbickers.Session on Order.Session_id = Session.Ses_id 
WHERE Order.order_isGift = "true"
GROUP BY 1, 2, 3
ORDER BY sum(Basket.qty) DESC
LIMIT 1;