0

我想知道如何找到所有菜单及其子菜单。

我有表格“菜单”,其中包含:

  1. 标识为 PK
  2. parent_id 作为 menu.id 的 FK
  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

我需要创建选择语句并获取菜单 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

4

0 回答 0