我正在尝试从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
答案 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;