0

すべてのメニューとそのサブメニューを見つける方法を知りたいです。

次を含むテーブル「メニュー」があります。

  1. PKとしてのID
  2. menu.id の FK としての parent_id
  3. タイトル文字

たとえば、データベースレコードを取得しました:

id: 2 parent_id = 1
id: 3 parent_id = 2
id: 4 parent_id = 2
id: 5 parent_id = 3
id: 6 parent_id = 5
id: 7 parent_id = 4
id: 8 parent_id = 7
id: 9 parent_id = 8
id: 10 parent_id = 1
id: 11 parent_id = 10

selectステートメントを作成し、メニューID = 2のすべてのサブメニューを取得する必要があります?? そのため、繰り返し選択のようなものです...私の唯一のパラメーターはid = 2であり、その結果、idを持つメニューを取得する必要があります: 3, 4 ,5 , 6, 7,8 , 9 10および11メニューなし.

このステートメントは、postgresql および oracle データベースで動作する必要があります

オラクルで私はそのようなものを書き込もうとします:

 with q(id, parent_id) as (
  select 
    t1.id , t1.parent_id
    from menu t1
    where t1.id = 454

    union all
    select 
    q.id , q.parent_id
      from q
      join menu t2 on q.id = t2.parent_id
)
select * from q

しかし、ループエラーORA-32044が発生しました。Oracleデータベースのバージョンがわからないため、このステートメントはすべてのOracleデータベースバージョン>= ver 9で正しい必要があります

4

0 に答える 0