Tengo una tabla de estructura de árbol con columnas: id, principal, nombre. Dado un árbol A-> B-> C, ¿cómo podría obtener la máxima ID de padre A según la ID de C? ¿Especialmente cómo escribir SQL con "con recursivo"? Gracias!Cómo obtener el padre más superior en PostgreSQL
6
A
Respuesta
4
Para implementar consultas recursivas, necesita un Common Table Expression (CTE). Esta consulta calcula ancestros de todos los nodos principales. Como solo queremos el nivel superior, seleccionamos donde level = 0.
WITH RECURSIVE Ancestors AS
(
SELECT id, parent, 0 AS level FROM YourTable WHERE parent IS NULL
UNION ALL
SELECT child.id, child.parent, level+1 FROM YourTable child INNER JOIN
Ancestors p ON p.id=child.parent
)
SELECT * FROM Ancestors WHERE a.level=0 AND a.id=C
Si desea recuperar todos sus datos, utilice una unión interna en el ID, p.
SELECT YourTable.* FROM Ancestors a WHERE a.level=0 AND a.id=C
INNER JOIN YourTable ON YourTable.id = a.id
1
WITH RECURSIVE q AS
(
SELECT m
FROM mytable m
WHERE id = 'C'
UNION ALL
SELECT m
FROM q
JOIN mytable m
ON m.id = q.parent
)
SELECT (m).*
FROM q
WHERE (m).parent IS NULL
Cuestiones relacionadas
- 1. PyQt: ¿cómo obtener el nivel superior padre del widget dado?
- 2. jQuery find padre superior TD
- 3. Cómo obtener la ubicación El directorio padre
- 4. jquery cómo obtener el nombre del padre
- 5. obtener el directorio padre en MSBuild
- 6. ¿Cómo obtener el número de filas eliminadas en PostgreSQL?
- 7. obtener el atributo de un nodo padre
- 8. ¿Cómo obtener el nombre de una restricción única en postgresql?
- 9. ¿Cómo obtener el padre del objetivo del evento con jQuery?
- 10. ¿Cómo se hace Python/PostgreSQL más rápido?
- 11. ¿Cómo puede obtener el padre de un UIElement?
- 12. cómo puedo obtener el padre del control de usuario wpf
- 13. ¿Cómo obtener el elemento padre de mi elemento?
- 14. Cadena para Más Bajo/Superior en C++
- 15. ¿Cómo obtener el contenedor de nivel superior de un JComponent?
- 16. obtener coordenadas de evento táctiles en relación con el padre
- 17. ¿Cómo mantener mi ventana más alta en la parte superior?
- 18. Obtener la fila enésima en PostgreSQL
- 19. ¿Puedo obtener el valor de contador CSS del padre?
- 20. ¿Cómo obtener un objeto superior (ventana o página) en WPF?
- 21. Obtener el padre de la clase de la instancia
- 22. PostgreSQL: Timestamp en el futuro
- 23. Obtener una referencia al padre IFRAME
- 24. ¿Cómo obtener el elemento padre en jQuery cuando se conoce el elemento hijo?
- 25. Obtener el nombre del mes del número en PostgreSQL
- 26. Obtener el valor más alto de una columna en MongoDB
- 27. ¿Cómo puedo obtener un producto cartesiano al azar en PostgreSQL?
- 28. Margen superior: 100% obtiene el valor del ancho del padre ... extraño
- 29. obtener parent.location.url - iframe - de hijo a padre
- 30. ¿Puedes obtener la ventana padre GTK desde un widget?
creo que esto sólo el padre inmediato y el nivel. He pegado los resultados de esta consulta en http://pastebin.com/epjG28YW –