ORACLE selecciona consulta recursiva
CONNECT BY anterior define el método de correlación de cada fila en la tabla
Si el "anterior" después de conectar por es el; por defecto, solo consulta la fila inicial que cumple las condiciones sin consulta recursiva
Condición 2: col_1 = col_2, col_1 es la clave principal (identifica al padre), col_2 es la clave secundaria (identifica al hijo) .
La condición 3 filtra el nodo correspondiente y sus nodos secundarios antes de la recursión. Si el nodo de nivel superior no se cumple, los nodos de nivel inferior se filtran automáticamente.
Filtros de condición 4; el nodo correspondiente después de la recursividad o Para los nodos secundarios, si el nodo de nivel superior no está satisfecho, el nodo de nivel inferior se promoverá automáticamente a un nivel.
Pseudocolumnas del sistema:
CURRVAL y NEXTVAL utilizan palabras reservadas para números de secuencia.
El identificador único del registro ROWID.
ROWNUM limita el número de conjuntos de resultados de la consulta.
Nivel muestra la jerarquía o nivel de una fila específica en el árbol de jerarquía.
CONNECT_BY_ROOT devuelve el nodo raíz de la capa actual (el contenido del nodo de nivel más alto correspondiente a la fila de datos actual).
La implementación de la función SYS_CONNECT_BY_PATH(<column>,<char>) muestra el contenido desde el nodo principal hasta la fila actual en forma de una "ruta" o una lista de elementos jerárquicos.
CONNECT_BY_ISCYCLE debe tomar el parámetro NOCYCLE. Se hace referencia al contenido del nodo principal en la línea actual y hay un ciclo en el árbol. Si el bucle muestra "1", en caso contrario muestra "0".
CONNECT_BY_ISLEAF determina si la fila actual es una hoja. Si una hoja muestra "1", si no es una hoja sino una rama (por ejemplo, el contenido actual es el padre de otras filas), muestra "0".
En Oracle 10g, se puede realizar cualquier operación de consulta siempre que se especifique "NOCYCLE". También hay una pseudocolumna relacionada con esta palabra clave: conectar _ por _ es ciclo. Si la fila actual se refiere al contenido del nodo principal y hay un bucle en el árbol, la pseudocolumna de la fila muestra "1"; de lo contrario, muestra "0".
Ejemplo
-Crear una tabla de prueba y agregar datos de prueba.
Crear prueba de tabla (superid varchar2(20), id varchar2(20), MC varchar 2(20)
Insertar en el valor de prueba ("0", "1 "); , "a 1");
Insertar en el valor de prueba ("0", "2", "A2");
Insertar el valor de prueba (' 1 ', ' 11 ', ' a 11 ');
Insertar en el valor de prueba ("1", "12", "a 12"); 2", "21", "a 21");
Insertar en el valor de prueba ("2", "22", "A22");
Insertar el valor de prueba (' 11 ', ' 111 ', ' a 111 ');
Insertar valor de prueba (' 11 ', ' 112 ', ' a 112 '); ( ' 12 ', ' 121 ', ' a 121 ');
Insertar en valores de prueba ("12", "122", "a 122"); Insertar en valor de prueba('21','211','a 211');
Insertar valor de prueba('21','212','a 212');
Insertar en el valor de prueba ("22", "221", "a 221");
Insertar en el valor de prueba ("22", "222", "A222"); p>
Enviar;
-Ejemplo de consulta jerárquica
Seleccionar nivel||' nivel' JC, lpad(', (nivel-1) * 4) || , MC.
Desde prueba
Comience con superid = '0', conéctese mediante prioridad id=superid;
Seleccione nivel | por _ isleafmxf, lpad(', (nivel-1) * 4) || id id, MC.
De la prueba
Comience con superid = '0', conéctese mediante id de prioridad = superid
-Primero proporcione "agrupación de cadenas de base de datos más cuatro" Dos ejemplos; para entender... método de conexión. ...
-Función: Agrupar por superid y usar ";" confix
-Implementación: Los dos ejemplos siguientes se conectan mediante la construcción de dos pseudocolumnas.