過去に同様の質問をしたことがありますが、必要な情報が得られませんでした。これが古い質問です。
SQLでMAX値とMIN値を持つ行のIDを取得するにはどうすればよいですか
私がする必要があるのはitem
、データベース内の同じフィールドを持つすべてのアイテムをグループ化したデータのセットを取得することですが、特定の方法でグループ化を順序付けるために、データセットが特定のアイテム ID に関連する詳細を出力することを確認してください。(私の場合は、いずれかのフィールドで注文するtotalStock
必要があります。price
totalStock
desc
price
asc
このSOの質問は私の質問によりよく答えていると思いますが、私はJoins
恐れています
ここに私がいる場所の例があります:
"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"
SQL についての私の理解が失われているのは、 ifまたはそれ以外item
の順序で並べられたグループ化でグループ化されたデータベースから結果の内部セットを取得することを目的としています。この内部結果セットは order byです。totalStock
totalStock > 0
price
sumTotalStock
重要なビットは
ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END
これは私に2つの問題を与えています。
1) 奇妙な出力が表示され、表示されるべきコンテンツが欠落しています。
2) また、ソート順を変更できるようにする必要があります
ORDER BY CASE WHEN totalStock > 0 *DESC* THEN totalStock ELSE price *ASC* END
astrix'dが機能DESC
しASC
ない場合DESC
、ステートメントの最後に配置する必要があるようですが、どちらORDER BY
の場合も順序付けが間違っています。DESC
上記の 2 つの問題を考えると、これが実際に機能しているかどうかはわかりません。
私は今、午後のほとんどと一晩中、Google とさまざまな SO の質問でこれに費やしてきましたが、残念ながらあきらめて、別の投稿をしなければなりませんでした!
誰かがこれをソートするコードを投稿してくれたら、私は永遠に感謝します!
私はMySQLデータベースを使用しています.and列はすべての場合で数値でtotalStock
あり、フィールドです。これらのフィールドでこれを機能させることができれば、必要な他のすべてを抽出できます。うまくいけば、正しい方向に向けるためにそれ以上は必要ありませんか?price
item
varChar