sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL Connect por lógica

La última condición no se aplica a sus datos, pero es muy importante para evitar la repetición infinita.

Para ilustrar este punto, considere lo que sucedería si agregara otra línea a su tabla:

E40 E40

Si empiezas con E40 en lugar de E90 , Oracle se convertiría en una recursividad infinita sin EMP_ID != MANAGER_ID condición, porque E40 se conectaría de nuevo a E40 .

Tenga en cuenta que un mejor enfoque para escribir esta consulta es usar NOCYCLE opción en lugar de codificar en una comprobación explícita:

SELECT *
FROM Temp
    START WITH EMP_ID = 'E90'
    CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID