sólo para añadir a estas respuestas, que me ha ayudado mucho,
que necesitaba para encontrar la matriz inmediata de un nodo, así como los padres nivel muy alto de una cadena de ganglios en algunos casos,
he utilizado la siguiente como una base para obtener los elementos en orden de niño a los padres
SELECT parent.* FROM
nested_set node,
nested_set parent
WHERE (
node.set_left BETWEEN parent.set_left AND parent.set_right
)
AND node.set_id={CHILD_NODE_ID_HERE}
ORDER BY parent.set_right - parent.set_left
#LIMIT 1,1
es entonces una cuestión de añadir el LIMIT 1,1
sólo capturar la segunda fila que sería el padre inmediato
sino que también debe tenerse en cuenta que con la consulta anterior, si el propio nodo es el padre nivel muy alto, entonces no habría un padre inmediato, así que con la LIMIT 1,1
debe devolver un conjunto de resultados vacío
para obtener la matriz nivel muy superior i invertido el orden por cláusula, incluido un cheque si el propio nodo es el padre superior, y se limita el resultado a la primera fila
SELECT parent.* AS top_level_right FROM
nested_set node,
nested_set parent
WHERE (
node.set_left >= parent.set_left
AND node.set_left <= parent.set_right
)
AND node.set_id={CHILD_NODE_ID_HERE}
ORDER BY parent.set_left - parent.set_right
LIMIT 1
en la última consulta que solía >= <=
operadores por lo que el rango seleccionado abarca el nodo hijo si también le sucede ser el padre de nivel superior
¿Sabe por qué el 'ORDER BY t2.rgt-t1.rgt' devolverá un error en sqlite? 'SQLSTATE [HY000]: error general: 1 columna no: t1.rgt' ... funciona cuando elimino t1.rgt del pedido por lo que parece ser un problema con el orden por ... – Stoner