次の表をお願いします
Field
+----+--------+----------+---------------------+
| id | name | Type | date |
+----+--------+----------+---------------------+
| 1 | price | int | 2009-09-02 00:07:07 |
| 2 | width | float | 2009-09-02 00:07:08 |
| 3 | height| float | 2009-09-02 00:07:30 |
+----+--------+--------------------------------+
Post
+----+--------+---------------------------------+
| id |title | Body |
+----+--------+---------------------------------+
| 1 | test | Bla bla bla |
| 2 | Hello | Bla bla bla |
| 3 | Its me | Bla bla bla |
+----+--------+---------------------------------+
Post_Annex
+----+--------+----------+---------------------+
| id | IdPost | IdField | Value |
+----+--------+----------+---------------------+
| 1 | 1 | 1 | 50 |
| 2 | 1 | 2 | 21 |
| 3 | 1 | 3 | 3 |
| 4 | 2 | 1 | 10 |
| 5 | 2 | 2 | 2 |
| 6 | 2 | 3 | 150 |
| 7 | 3 | 1 | 1 |
| 8 | 3 | 2 | 25 |
| 9 | 3 | 3 | 15 |
+----+--------+--------------------------------+
そして、PostテーブルとPost_Annexテーブルからデータを選択し、PostテーブルのIDでグループ化し、価格で並べ替えます(これは、Post_AnnexテーブルのIdFieldが1に等しい場合を意味します)。だからこれは私の質問です:
SELECT p.title
FROM Post p
LEFT JOIN Post_Annex pa
ON p.id = pa.IdPost
GROUP BY p.id
ORDER BY case when pa.IdField = 1 then 0 else 1, pa.Value DESC
これは私にこの順序で結果を与えました:its Me | Hello | test
これで結構です。しかし、幅(IdField = 2)または高さ(IdField = 3)で並べ替えても、同じ結果が得られました。
私がこれを解決するのを助けるためにアイデアをマスターしてください?前もって感謝します。