0

アプリケーションのメニュー システムを作成していますが、データベース クエリの作成方法に少し行き詰まっています。

私のテーブルは次のようになります。

ここに画像の説明を入力

緑色の行は「親メニュー」で、その他は子です。

表示されているデータを並べ替えて、親を表示し、次にその子 (存在する場合) を表示する TSQL クエリを作成するのに助けが必要です。

並べ替え順序は次のとおりです。

親、次に親の子、次に順序 (数値)。

私のデータベースは次のようになります。

ここに画像の説明を入力

4

2 に答える 2

2

SQL サーバーの場合、次のような再帰クエリを実行できます。

with cte as (
    select
        m.id, m.parent_id, m.title,
        right('00000' + cast(m.ordering as nvarchar(max)), 5) as ordering
    from menu as m
    where m.parent_id is null

    union all

    select
        m.id, m.parent_id, m.title,
        c.ordering + '.' + right('00000' + cast(m.ordering as nvarchar(max)) , 5) as ordering
    from menu as m
        inner join cte as c on c.id = m.parent_id
)
select *
from cte
order by ordering

sql fiddle demo

于 2013-08-25T05:44:09.717 に答える