OK、それで私はこの質問を書いたときに提案された14のStack Overflowの提案を経験しました、そして私はすべてを試しました、そしてこれを理解することができません。
レビュー付きのジムディレクトリがあります。これらのジムを郵便番号、市/州、または近隣/市/州で検索できるスクリプトがあります。
バックエンドとデータベースにいくつかのフィールドがあります。この質問に関連するものは優先度(私はそれに1+の番号を付け、最初に最高または最低を最初に表示する必要があります)、写真(5枚の写真を含めることができます)、メンバーシップには(ジムがメンバーシップに含めることができるいくつかのこと)、およびレビュー(編集可能ではありませんが、ジムにあるレビューの数をカウントします)
この順番で並べ替えたい
ジムが優先される場合は、優先されるため、最初に表示する必要があります。ヌルの優先度が最後になる必要があります。次に、写真で並べ替えても問題ありません。ヌルが最後になります。次に、メンバーシップで並べ替えるには、ヌルが最後になります。次に、レビュー数0で並べ替えるか、ヌルが最後になります。
したがって、4つのジムがある場合、AとBは優先度、写真、メンバーシップがあり、レビューは0、Cは優先度がなく、写真、メンバーシップはありませんが、レビュー数は2で最も高く、Dは優先度がなく、写真とメンバーシップがあります。しかし1つのレビュー:それはこの順序でソートする必要があります:
GYM Priority Photo Membership Reviews
A yes has some has count 0
B yes has some has count 0
C no no no memb. 2
D no has some has count 1
予想されるソート順の結果:ABDC
混乱してすみません。
これが私がすでに試したことです:
SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY priority ORDER BY photo, member_includes, reviews DESC) x LIMIT 0, 150
SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") ORDER BY priority, photo, member_includes, reviews DESC) x LIMIT 0, 150
SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY photo, member_includes, reviews ORDER BY priority DESC) x LIMIT 0, 150
SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY photo, member_includes, reviews ORDER BY priority DESC LIMIT 0, 150
SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") ORDER BY priority, photo, member_includes, reviews DESC LIMIT 0, 150
そして、私はASCの有無にかかわらず他のすべての種類の組み合わせを試しましたが、それでも正しくソートされません。何が間違っているのかわかりません。
助けてください!
ありがとう、デビッド