Hallo,
Vielen Dank für die Anmerkungen. Da sind viele nützliche Tips drin, die ich mir merken werde.
Es wurde mir ein Child genannt, das definitiv ein Nicht-Child ist.
SELECT node.payload FROM 000node parent INNER JOIN 000node node ON node.lft BETWEEN parent.lft AND parent.rgt WHERE parent.payload = 4303 ORDER BY node.lft
>
> erhalte ich als Ergebnis:
>
> 4303
> 5290
>
> Aber die ID 5290 ist definitiv kein Child von 4303.
> Mehr beunruhigt mich, dass ich ein falsches Ergebnis vorliegen habe.
> Wie kann ich das anhand der Tabelle per Sichtung verifizieren?
Schau Dir an, wie die betreffenden Knoten aussehen:
~~~sql
SELECT
payload,
lft,
rgt
FROM
000node
WHERE
payload IN (4303, 5290)
Schau Dir den lft-Wert des Kindknotens und die Grenzen des Elterknoten an.
Ob ich den Join implizit in der WHERE-Klausel oder explizit in der JOIN-Klausel schreibe ist beim INNER JOIN für die Ergebnismenge nicht relevant.
Freundliche Grüße
Vinzenz