tylko dodać do tych odpowiedzi, które pomogły mi się dużo,
Musiałem znaleźć bezpośredniego rodzica węzła, a także bardzo najwyższego poziomu rodzica łańcucha węzłów w niektórych przypadkach
użyłem następujących jako podstawa do uzyskania produktów w dziecko-to-rodzica aby
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
to wówczas kwestia dodawania LIMIT 1,1
tylko uchwycić drugiego rzędu, które byłyby natychmiastowe rodzic
należy również zauważyć, że z powyższego zapytania jeśli sam węzeł jest bardzo najwyższym poziomie rodzic, to nie byłoby to bezpośredniego rodzica, więc z LIMIT 1,1
powinien powrócić pusty zestaw wyników
aby uzyskać bardzo najwyższego poziomu rodzica i odwróceniu kolejności przez klauzuli zawarte czek jeśli sam węzeł jest najlepszym rodzicem, a ogranicza wynik do pierwszego rzędu
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
w ostatnim zapytaniu użyłem >= <=
operatorzy tak że wybrany zakres obejmuje węzeł potomny, jeśli tak się dzieje być rodzicem najwyższego poziomu
Czy wiesz, dlaczego 'ORDER BY t2.rgt-t1.rgt' zwróci błąd w sqlite? 'SQLSTATE [HY000]: Błąd ogólny: 1 nie ma takiej kolumny: t1.rgt' ... działa, gdy usuwam t1.rgt z zamówienia, więc wydaje się, że problem z zamówieniem przez ... – Stoner