Query recursvio oracle

Fuente :
http://foros.3dgames.com.ar/programacion.97/377973.oracle-connect-recorrer-estructuras-en-forma-arbol.html

Código:

SELECT *
FROM categorias
START WITH id =
CONNECT BY PRIOR parent_id = id

El PRIOR es el que marca en que dirección se recorre el arbol, por ejemplo, para recorrer desde una hoja hasta la raiz:

Código:

SELECT *
FROM categorias
START WITH id =
CONNECT BY parent_id = PRIOR id

Y para saber en que nivel del recorrido estamos usamos la columna especial LEVEL. Podemos usar este valor para formatear la salida, por ejemplo:

Código:

SELECT RPAD(‘ ‘, 2*(LEVEL-1)) || nombre
FROM categorias
START WITH parent_id IS NULL
CONNECT BY PRIOR parent_id = id

para ver el arbol de categorias indentado.

O usar la función SYS_CONNECT_BY_PATH, para ir concatenando una columna con sus valores anteriores en cada nodo del árbol. Por ejemplo:

Código:

SELECT RPAD(‘ ‘, 2*(LEVEL-1)) || nombre, SYS_CONNECT_BY_PATH(id,’.’)
FROM categorias
START WITH parent_id IS NULL
CONNECT BY PRIOR parent_id = id

Eso también nos va a mostrar el path recorrido para llegar a un nodo, compuesto por cada id de donde desciende, separado por puntos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: