Mam typowo tabelkę kategorii:
id | id_parent | name 1 | 0 | kategoria 2 | 0 | kategoria 2 3 | 1 | subkategoria 4 | 3 | ostatnia podkategoria 5 | 3 | ostatnia podkategoria 2
teraz jak stworzyć stworzyć zapytanie aby pobrać wszystkie kategorie nadrzędne dla kategorii o id 4 i 5.
Tak żeby też nie było zdublowania kategoria o id 3 , do której należą kategorie 4 i 5.
Docelowo chce uzyskać drzewo
-kategoria
--subkategoria
---ostatnia podkategoria
---ostatnia podkategoria 2
obecnie mam takie zapytanie:
SELECT T2.id_category, T2.name FROM ( SELECT @r AS _id, (SELECT @r := id_parent FROM category WHERE id_category = _id) AS id_parent, @l := @l + 1 AS lvl FROM (SELECT @r := 4, @l := 0) vars, category h WHERE @r <> 0) T1 JOIN category T2 ON T1._id = T2.id_category ORDER BY T1.lvl DESC
i otrzymuje drzewko w górę ale tylko dla podkategorii ID 4. Moglbym wykonac ponownie te zapytanie dla ID 5 ale otrzymam znowu drugie drzewko...
chyba ze bym wykonal dwa takie zapytania dla kazdego ID odzielnie (4,5) wrzucil rezultaty do tablicy php i nastepnie polaczyl te tablice ze sobą z wykluczeniem zdublowanych id kategorii..
hmmm jest to jakies rozwiazanie ale chyba malo optymalne robic odzielne takie zapytania dla kazdego ID odzielnie biorac pod uwage ze moze byc ich nawet 100