過去に同様の質問をしたことがありますが、必要な情報が得られませんでした。これが古い質問です。
SQLでMAX値とMIN値を持つ行のIDを取得するにはどうすればよいですか
私がする必要があるのはitem、データベース内の同じフィールドを持つすべてのアイテムをグループ化したデータのセットを取得することですが、特定の方法でグループ化を順序付けるために、データセットが特定のアイテム ID に関連する詳細を出力することを確認してください。(私の場合は、いずれかのフィールドで注文するtotalStock必要があります。pricetotalStockdescpriceasc
この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です。totalStocktotalStock > 0pricesumTotalStock
重要なビットは
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あり、フィールドです。これらのフィールドでこれを機能させることができれば、必要な他のすべてを抽出できます。うまくいけば、正しい方向に向けるためにそれ以上は必要ありませんか?priceitemvarChar