Ver Mensaje Individual
  #5  
Antiguo 08-09-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Gracias a mamcx quisiera modificar mi respuesta.
Esto lo he probado en Firebird 2.5

Código:
MENU
id
idmenup
orden        -- Orden de los items de menu
usuario      -- Usuario para definir diferentes menus/ordenaciones por usuario
descripcion

Indexado por (usuario, idmenup)

ID  IDMENUP  ORDEN  USUARIO  DESCRIPCION
 1     0        1       1    PRINCIPAL
 2     1        1       1    SUBMENU PRINCIPAL 1
 3     1        2       1    SUBMENU PRINCIPAL 2
 4     1        3       1    SUBMENU PRINCIPAL 3
 5     0        2       1    SECUNDARIO
 6     5        1       1    SUBMENU SECUNDARIO 1
 7     5        2       1    SUBMENU SECUNDARIO 2
 8     5        3       1    SUBMENU SECUNDARIO 3
Código SQL [-]
WITH RECURSIVE menu_tree
as (
    -- Menu ROOT es el que tiene "IDMENUP = 0"
    select idmenup, id, orden, usuario, descripcion
    from menu
    where
    idmenup = 0
    UNION ALL
    -- CHILD se relacionan con el padre por "PADRE.IDMENUP = ID"
    select ch.idmenup, ch.id, ch.orden, ch.usuario, ch.descripcion
    from menu ch
    join menu_tree mt on ch.idmenup = mt.id and ch.usuario = mt.usuario)
select *
from menu_tree
where
usuario = 1
order by idmenup, orden

Última edición por duilioisola fecha: 08-09-2022 a las 08:53:34.
Responder Con Cita