2011-12-09 6 views
0

SQLで2つの列でグループ化するとき、私はいくつかの望ましくない結果を得ています。私はそれを必要とする方法を働かせるために2つの列でSQLグループを得ることができません

SELECT i.*, o.mdate, u.name as producer_name, b.price as beat_price, COUNT(i.id) as sold_count 
       FROM #__mfs_items AS i 
       INNER JOIN #__mfs_users AS mu 
       ON i.producer = mu.id 
       INNER JOIN #__users AS u 
       ON i.producer = u.id 
       INNER JOIN #__mfs_beats AS b 
       ON i.beat_id = b.id 
       INNER JOIN #__mfs_orders AS o 
       ON i.order_number = o.order_number    
       GROUP BY i.producer 
       ORDER BY COUNT(*) DESC 
       LIMIT 10 

これは、トップセール商品を販売者がグループ化することです。これは残念なことに、各売り手のすべての商品の売り上げを集めて合計しています。これは私が望むものではありません。私がGROUP BY i.beat_idで試してみると、これは私に望ましい結果をもたらしますが、10のトップスポットすべてを取る1人の売り手がいます。 GROUP BY i.beat_id, i.producerを試してみると、i.beat_idだけでグルーピングしたのと全く同じ結果が得られます。

私の目的は一番売れている商品を持っていることですが、私はそれぞれの場所にユニークな売り手が欲しいです。誰かがこれを達成するのを手助けできますか?非常に事前

+0

別の「上位N /グループ」の問題。 http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-results-per-groupには、開始するために必要な情報があります。 – Yuck

答えて

0

ありがとうございますが、単一の列、あなたがそれらをグループ化しているときの条件によって、あなたのグループ内のすべての列の選択をしていないはずです。

関連する問題