Advertisement
econz

Firebird - SQL Recursivo

Feb 21st, 2012
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 0.86 KB | None | 0 0
  1. WITH recursive HIERARQUIA
  2. AS (SELECT TC.ID
  3.          , TC.id_pai
  4.          , TC.id_filho
  5.          ,C.nome
  6.          ,C.ativo
  7.          , CAST(lpad(TC.ID,9,0)AS VARCHAR(2000)) AS Ordem
  8.  
  9.     FROM tree_control TC
  10.     INNER JOIN Control C ON
  11.         C.id = TC.id_filho
  12.     WHERE TC.id_pai IS NULL
  13.     AND C.ativo = 'S'
  14.  
  15.     UNION ALL
  16.  
  17.      SELECT TC.ID
  18.          , TC.id_pai
  19.          , TC.id_filho
  20.          ,C.nome
  21.          ,C.ativo
  22.          , CAST(H.Ordem || lpad(TC.id,9,0)AS VARCHAR(2000))
  23.      FROM HIERARQUIA H
  24.      JOIN tree_control TC ON
  25.           H.ID_Filho = TC.id_Pai
  26.      INNER JOIN Control C ON
  27.         C.id = TC.id_filho
  28.          WHERE H.ativo = 'S'
  29.      )
  30.  
  31.  SELECT
  32.     H.ID
  33.     , H.id_pai
  34.     , H.id_filho
  35.     ,H.nome
  36.          ,H.ativo
  37.     ,H.Ordem
  38.  FROM HIERARQUIA  H
  39.     WHERE ((H.id_pai  = :ID) OR (:P_ID = 'S'))
  40.     ORDER BY H.Ordem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement