すべてのメニューとそのサブメニューを見つける方法を知りたいです。
次を含むテーブル「メニュー」があります。
- PKとしてのID
- menu.id の FK としての parent_id
- タイトル文字
たとえば、データベースレコードを取得しました:
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で正しい必要があります