我想知道如何找到所有菜单及其子菜单。
我有表格“菜单”,其中包含:
- 标识为 PK
- parent_id 作为 menu.id 的 FK
- 标题字符
我已经在我的数据库记录中获得了例如:
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
我需要创建选择语句并获取菜单 id = 2 的所有子菜单?所以它类似于recur-ency select ...我唯一的1个参数是id = 2,结果我必须得到带有id的菜单:3、4、5、6、7、8、9没有10和11菜单。
此语句必须与 postgresql 和 oracle 数据库一起使用
在 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