0

我正在尝试从桌子上退回属于 an 的最有天赋的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
4

3 回答 3

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
于 2012-11-24T16:42:10.893 回答
1

你有没有想过有另一张桌子简单地计算礼物,因为它们是有天赋的?然后你可以排序Times_Gifted,它会在后端节省一些操作。

否则,如果它是一次性计算,也许是这样的

SELECT count(*) FROM `tablename`

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

祝你好运!

于 2012-11-24T13:26:14.000 回答
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;
于 2012-11-24T17:50:17.153 回答