0

私はテーブルorderからに属する最も才能のあるアイテムを返そうとしていordersます。現在、これはギフトされたアイテムを返します。私がしたいのは、ギフトが1回限りではなく、実際にギフトであるかどうかを確認する方法として、アイテムが複数回ギフトされていることを確認してから返品することです。人気のギフトの選択肢。

これは私が現在持っているものです:

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

あなたはGROUPBYと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、バックエンドでの操作を節約できます。

それ以外の場合、それが1回限りの計算である場合、おそらくこのようなもの

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 に答える