Autor Zpráva
peta
Profil
Potrebuji vytahnout z databaze menu. Bohuzel v db neni nic jineho nez
id
title
superior_id = nadrazene id
Planuji sql dotaz takoveho typu. Da se to resit i jinak?
Je to jakysi cms Seed, nespis verze 2. Manik, co to vytvarel dal do sablony menu jako html kod, takze editacni cast cms se nepouzije :) Nechce se mi prozkoumavat, jak to cms funguje, tak misto html tam dam vlastni php a budu doufat v zazrak funkcnosti.

SELECT title,url,id,superior_id,0 AS tree 
  FROM categories
  WHERE superior_id=42
UNION
SELECT title,url,id,superior_id,1 AS tree 
  FROM categories
  WHERE superior_id IN (SELECT id FROM categories WHERE superior_id=42)
ORDER BY superior_id, title
Edit: Oprava dotazu na funkcni verzi.
juriad
Profil
Jinak než unionem takového počtu SELECTů, jako je maximální hloubka menu, nebo tím, že položíš pro každou úroveň jeden SELECT, se ti to nepodaří
http://stackoverflow.com/questions/13186173/recursive-sql-select viz první odpověď.
Kajman
Profil
Pokud nejsou v categories tisíce záznamů, může být svižné udělat jeden dotaz a strom si poskládat ze získaného pole až v php.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: