だから私はこの次のクエリを修正しようとしています:
SELECT * FROM `#__gdwproddise_category`
ORDER BY IF(`parent_id`, `parent_id`, `ordering`),
`parent_id`, `ordering` asc
したがって、重要な MYSQL フィールドは次のとおりです。
`multicat_id` = primary key
`parent_id`
`ordering`
親カテゴリparent_id
= 0 残り = 親へmulticat_id
それぞれの一意parent_id
(=0 を含むため、親を含む) には、一意の順序がordering
フィールドに設定されています。
したがって、順序付けフィールドには、値が 1、2、3 などの複数の行があります (各値はそれぞれの中で一意です)。parent_id
like parent_id=0 will only have 1 row with ordering set to 1.
and parent_id=1 will only have 1 row with ordering set to 1.
etc.
次のように出力したい:
parent (ordering=1)
-child (ordering=1)
-child (ordering=2)
parent (ordering=2)
-child (ordering=1)
etc.
この次のクエリはほとんど機能しているようです。ただし、親はordering
フィールドによって順序付けられていません..主キーによって順序付けられているようです。
SELECT * FROM `#__gdwproddise_category`
ORDER BY IF(`parent_id`, `parent_id`, `multicat_id`),
`parent_id`, `ordering` asc
一番上に投稿した最初のクエリは、これを修正しようとした私の推論でしたが、うまくいきません...最初のクエリはうまく機能します。少なくとも親と子は最初のグループにまとめられます。この 2 番目のものは、子から親をグループ化します。子供たちはくっついているようです。
次のスレッドからの回答の 1 つに示されている例に基づいて、クエリを作成しました 。SQL ネストされた順序は?
この記事を見つけました: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
その記事の「ltg rtg」ソリューションを使用するのは複雑に思えますが、私が使用しているクエリがほぼ正確に機能する場合、その記事は無限のサブカテゴリをサポートしているようです...私のシステムには 1 レベルのサブカテゴリしか必要ありません.