2012-03-16 19 views
2

にグループ化された結果を得るためにケースやグループ化を使用して、私は過去に同様の質問をしてきたが、非常に私は必要なものを取得していない、ここに古い質問は、特定の順序

How do I get the ID of a rows which have MAX and MIN values in SQL

何です私は、データベースの同じitemフィールドを持つすべてのアイテムをグループ化したデータセットを取得しますが、データセットが特定のアイテムIDに関する詳細を出力するようにして、グループ化を特定の方法で順序付けするようにします。 (totalStockが、その後descprice場合、オーダーascを注文した場合、私の場合、私は、どちらかtotalStockフィールド、またはpriceで注文する必要があります。

私はこのSO質問が良く、私の質問に答えるが、私は理解していないと思い

"SELECT * FROM (select *, count(id) as Variants, sum(totalStock) as sumTotalStock 
FROM `products` WHERE id > 0 AND `display`='1' 
GROUP BY item ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END DESC) 
AS unknownVar 
ORDER BY sumTotalStock" 
012:Joinsは、私はここで私がでてるところの例です

MySQL query order the results in GROUP BY

怖いですSQLの

私を失うの理解はtotalStock > 0場合、あるいはpricetotalStock順グループ分けしてitemによってグループ化された私のデータベースから結果の内側のセットを取得することを目指しています。この内部結果セットは、次にsumTotalStockによって注文されます。これは私に二つの問題を与えている

ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END 

重要なビットです。

1)いくつかの奇妙な出力、表示する必要があるコンテンツが欠落しています。

2)また、私は動作しませんastrix'd DESCASCでソート順

ORDER BY CASE WHEN totalStock > 0 *DESC* THEN totalStock ELSE price *ASC* END 

を変更することができるようにする必要があり、私はの終わりにDESCを入れて持っているように見えますORDER BYというステートメントがありますが、どちらの場合もDESCの順番ですが、間違っています。

上記の2つの問題を考えると、これは実際には全く機能していないと私は確信しています!

私は午後と夕方のほとんどをGoogleとさまざまなSOの質問に費やしましたが、私はあきらめて別のものを投稿しなければなりませんでした。

誰かが私にこれを並べ替えるコードを投稿できたら、私は永遠に感謝しています!

私は、totalStockprice列を気にMySQLデータベースを使用していますが、すべての場合の数値であり、itemvarCharフィールドです。私はこれらのフィールドでこれを行うことができたら、私は必要なものをすべて抽出することができますので、うまくいけば、それ以上のもので正しい方向に向ける必要はありません。

答えて

0

何がASC/DESCで前にやっていたことは許可されていません(そして、あなたがやろうとしていたものを考えるならば、それは本当にすべきではない)この

ORDER BY (CASE WHEN totalStock > 0 THEN totalStock ELSE -1 * price END) DESC 

を試してみてください。 CASE文全体を変数列と考えると、同じ列をソートできない2つの異なる方法があります。

+0

私は、価格を反転しています...賢い!しかし、それが働いているように見える間に私が得ている結果は間違っています。私の開発サイトは次のとおりです:http://dev.hartnollguitars.co.uk/Search.aspx?subcategory=Gibson-Les-Pauls&sort=price%20descこのリンクはcaseステートメントを使用しませんが、http:// dev。検索どちらのリンクでもWHERE句は同じですが、結果は異なります。ストックがないもの、または「グループ」内のアイテムが1つしか表示されていないと思っていましたが、そうではありません。 –

+0

'totalStock'はStock Levelから返されたページにも表示されます。また、実際にはいくつのグループ化された項目があるかを示す' X Options'という出力があります。グループ化された項目はオプションです(利用可能です)いくつかの製品にはオプションが1つしかないので、グループ化されたデータには1つのアイテムしか返されません。これらの場合の並べ替えは無関係ですが、結果セットの一部の項目はランダムに見えます。 –

+0

もう一度見て、読んでいない、私はこれがそれを行う方法だとは思わない。その内側のクエリはグループ化した後にソートされていると思うので、それは良いことではありません。私はグループを並べ替える必要があり、それを行う方法がわかっている唯一の方法は 'GROUP_CONCAT'ですが、複数のカラムデータを取得することで本当にうまくいきます。私は 'join 'の仕組みを工夫しなければならないと思う。 –

関連する問題