Ich habe Ihren Lauf der geschachtelten Set Hierarchie-Setup mit den folgenden Spalten:
Tabellenname:
%Vor%Spalten:
%Vor%Kennt jemand eine Abfrage, um das Elternteil eines Knotens zu bestimmen?
Ich habe ein paar Stellen gelesen, dass es praktisch ist, eine parent_id Spalte in Ihrer Tabelle zu haben, um dies zu verfolgen, aber es scheint redundant zu sein und es scheint, als könnte es mit dem verschachtelten nicht mehr synchron sein Wird gesetzt, wenn eine Abfrage beim Hinzufügen / Entfernen / Verschieben von Elementen innerhalb des Sets falsch ausgeführt wurde.
Sehen Sie sich diese Frage an . Es ist ähnlich wie bei Ihnen. Ich habe dort eine Frage gestellt, die Sie brauchen könnten.
%Vor%Ich hoffe, da ist was du brauchst.
Für die folgende Tabelle:
%Vor%es erzeugt die Ausgabe:
%Vor%nur um diese Antworten hinzuzufügen, die mir sehr geholfen haben,
Ich musste in einigen Fällen das direkte Elternelement eines Knotens sowie das oberste übergeordnete Element einer Knotenkette finden,
Ich habe Folgendes als Basis verwendet, um die Elemente in der Reihenfolge Kind-zu-Eltern zu erhalten
%Vor% es ist dann eine Frage des Hinzufügens von LIMIT 1,1
, um nur die zweite Zeile zu erfassen, die das unmittelbare Elternteil wäre
Es sollte auch angemerkt werden, dass bei der obigen Abfrage, wenn der Knoten selbst der oberste Elternteil der obersten Ebene ist, er kein unmittelbares Elternteil hätte, also mit LIMIT 1,1
sollte er zurückgeben leere Ergebnismenge
Um das oberste übergeordnete Element zu erhalten, habe ich die order by-Klausel umgekehrt, eine Überprüfung vorgenommen, ob der Knoten selbst das oberste übergeordnete Element ist, und das Ergebnis auf die erste Zeile beschränkt
%Vor% In der letzten Abfrage habe ich die >= <=
-Operatoren verwendet, so dass der ausgewählte Bereich den untergeordneten Knoten umfasst, wenn er auch der oberste übergeordnete Knoten ist
Ich hatte ein Problem mit Lucasz 'Anfrage. Meine Version von mysql hat den Befehl TOP nicht verstanden. Ich musste stattdessen LIMIT verwenden. Hier ist der überarbeitete Code.
%Vor%Ändere das Zeug in den [] natürlich ganz nach deinen Bedürfnissen. Entferne auch die [] 's. Diese Abfrage gibt nur eine Zeile zurück. Wie so ...
%Vor%Sie können eine max-Anweisung anstelle der order / limit-Anweisung verwenden und benötigen möglicherweise ein anderes Schlüsselwort, um die Ergebnisse abhängig von Ihrer Datenbank auf eine Zeile zu beschränken. Zwischen eher als & lt; und & gt; würde funktionieren, wenn Ihre Datenbank den exklusiven Satz zurückgibt, was MySQL nicht tut.
Tags und Links sql mysql hierarchy nested-sets