Om du frågar om "Finns det i mysql rekursiva frågor?" svara "NEJ".
Men det finns ett mycket bra sätt att hantera det.
Skapa hjälptabell (som säger CatHierarchy)
CatHierarchy:
SuperId, ChildId, Distance
------------------------------
1 1 0
1 2 1
2 2 0
Denna redundanta data gör det enkelt i en fråga att välja valfri hierarki, och i 2 infoga stödja valfri hierarki (radering utförs även i en fråga med hjälp av radering av kaskadintegritet).
Så vad betyder detta. Du spårar alla vägar i hierarkin. Varje nod av Cat måste lägga till referens till sig själv (avstånd 0), sedan stödja duplicering genom att lägga till redundant data om noder är länkade.
För att välja kategori med sub skriv bara:
SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
WHERE ch.SuperId = :someSpecifiedRootOfCat
someSpecifiedRootOfCat - är parametern för att specificera roten av kategoriSOM ÄR ALLT!