Ich habe eine Tabelle wie folgt aus:Wie kann ich alle Eltern hierarchisch auswählen?
// tags
+----+--------------+-----------+---------+
| id | tag_name | parent_id | related |
+----+--------------+-----------+---------+
| 1 | programming | NULL | 1 |
| 2 | medical | NULL | 2 |
| 3 | juridical | NULL | 3 |
| 4 | HTML | 1 | 1 |
| 5 | PHP | 1 | 1 |
| 6 | function | 5 | 1 |
| 7 | ampoule | 2 | 2 |
| 8 | needle | 7 | 2 |
| 9 | CSS | 1 | 1 |
| 10 | echo | 5 | 1 |
| 11 | padding | 9 | 1 |
+----+--------------+-----------+---------+
Auch habe ich diesen Wert: function
. Jetzt möchte ich alle seine Eltern auswählen. So wird dies erwartet Ergebnis:
+----+--------------+-----------+---------+
| id | tag_name | parent_id | related |
+----+--------------+-----------+---------+
| 1 | programming | NULL | 1 |
| 5 | PHP | 1 | 1 |
+----+--------------+-----------+---------+
Wie kann ich das tun?
Hinweis:related
Spalte hat nichts mit dieser Frage zu tun. Es hat es hinzugefügt, weil ich manchmal alle in Verbindung stehenden Markierungen (beide Eltern und Kinder) auswählen muss.
MySQL nicht hierarchische Daten zu speichern, ausgelegt. Die einzige Möglichkeit, dies zu tun, ist die Verwendung einer gespeicherten Prozedur mit einer while-Schleife. Sie können die Daten jedoch etwas anders speichern, als Sie möchten. Hier ist ein guter Blog-Post über Möglichkeiten, dies zu tun: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/. –