Wenn Sie fragen:"Gibt es in mysql rekursive Abfragen?" antworten Sie mit "NEIN".
Aber es gibt einen sehr guten Ansatz, damit umzugehen.
Hilfstabelle erstellen (mit CatHierarchy)
CatHierarchy:
SuperId, ChildId, Distance
------------------------------
1 1 0
1 2 1
2 2 0
Diese redundanten Daten ermöglichen es, in 1 Abfrage jede Hierarchie auszuwählen und in 2 Einfügungen jede Hierarchie zu unterstützen (Löschen wird auch in 1 Abfrage mit Hilfe der Löschkaskadenintegrität durchgeführt).
Also was bedeutet das. Sie verfolgen alle Pfade in der Hierarchie. Jeder Cat-Knoten muss einen Verweis auf sich selbst hinzufügen (Distanz 0) und dann die Duplizierung unterstützen, indem redundante Daten über verknüpfte Knoten hinzugefügt werden.
Um eine Kategorie mit Sub auszuwählen, schreiben Sie einfach:
SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
WHERE ch.SuperId = :someSpecifiedRootOfCat
someSpecifiedRootOfCat - ist ein Parameter, um den Stamm von categoryTHATS ALL anzugeben!