Tengo una memoria terrible. Cada vez que hago una consulta CONNECT BY en Oracle, y me refiero a cada vez, tengo que pensar mucho y, por lo general, a través del método de prueba y error, sobre qué argumento debe ir el PRIOR.¿Cómo recuerdo qué camino debe tomar PRIOR? CONÉCTATE POR consultas
No sé por qué no recuerdo, pero no lo sé.
¿Alguien tiene una memoria mnemotécnica útil así que siempre lo recuerdo?
Por ejemplo:
Para ir hacia abajo un árbol desde un nodo - Yo, obviamente, tenía que ver esto :) - haces algo como:
select
*
from
node
connect by
prior node_id = parent_node_id
start with
node_id = 1
Por lo tanto - que empezar con una node_id
de 1 (la parte superior de la rama) y la consulta busca todos los nodos donde parent_node_id
= 1 y luego se repite hasta la parte inferior del árbol.
Para ir hasta el árbol del prior va en la matriz:
select
*
from
node
connect by
node_id = prior parent_node_id
start with
node_id = 10
Así que a partir en algún lugar de una rama (node_id = 10
en este caso) de Oracle obtiene por primera vez todos los nodos donde el parent_node_id
es el mismo que el uno de los cuales es node_id
10.
EDITAR: me todavía consigue este mal por lo que me gustaría añadir una edición aclarar para ampliar el Answ aceptado ER - Así es como lo recuerdo ahora:
select
*
from
node
connect by
prior node_id = parent_node_id
start with
node_id = 1
El 'lenguaje Inglés' versión de este SQL Ahora leo como ...
en el nodo, empezando por la fila en la que
node_id = 1
, la siguiente fila seleccionada tiene suparent_node_id
igual anode_id
de la fila anterior ( ).
EDITAR: Quassnoi hace un gran punto - la orden de escribir el SQL hace las cosas mucho más fácil.
select
*
from
node
start with
node_id = 1
connect by
parent_node_id = prior node_id
Esto se siente mucho más claro para mí - el "comienzan con" da la primera fila seleccionada y la "conexión por" da la siguiente fila (s) - en este caso los hijos de node_id = 1.
Me gusta "Siempre ponga PRIOR en la parte derecha de la expresión" - lo hace más fácil. También poniendo "comienzo con" al comienzo. –