postgresql和oracle递归select语句

时间:2013-03-04 13:26:54

标签: sql oracle oracle10g postgresql-9.2

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

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

  1. id as PK
  2. parent_id为FK to menu.id
  3. 标题字符
  4. 我已经进入了我的数据库记录,例如:

    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的所有子菜单? 所以像recur-ency选择...... 我唯一的一个参数是id = 2,结果我必须有id的菜单: 没有10和11菜单的3,4,5,6,7,8,9。

    此声明必须与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

0 个答案:

没有答案