FiDO
25.11.2003, 02:58:38
Mam tabele z kategoriami, z nastepujacymi polami:
id | parent_id | name
Kateogria najwyzszego rzedu ma parent = 0, sa tylko 2 poziomy kategorii.
Nie wszystkie kaegorie maja swoje podkategorie.
Jak teraz pobrac wszystkie podkategorie (wraz ze swoimi kategoriami) i wszystkie kategorie nie majace podkategorii?
Samo wyciagniecie kategorii z podkategoriami to nie problem, zalatwia to zapytanie:
[sql:1:4b1fe39f37]SELECT g.id, CONCAT(g2.name, ' >> ',g.name) nazwa
FROM groups g
LEFT JOIN groups g2 ON ( g.parent_id = g2.id )
WHERE g2.name IS NOT NULL
ORDER BY g2.name, g.name[/sql:1:4b1fe39f37]
Ale czy da sie w jednym zapytaniu wyciagnac jeszcze kategorie bez podkategori?
uboottd
25.11.2003, 22:17:10
tak samo tylko g2.name is null
FiDO
25.11.2003, 22:33:28
niebardzo ;P
W takim wypadku zwraca wszystkie kategorie pierwszego stopnia, a ma zwrocic tylko te pierwszego stopnia, ktore nie maja swoich podkategorii.
Poki co rozbilem to na 2 query, ale chetnie bym poznal rozwiazanie teog w jednym, o ile takowe istnieje.
uboottd
25.11.2003, 22:48:39
A bo masz to zapytanie dziwacznie sformulowane.
[sql:1:4a3be7482a]
SELECT g.id, CONCAT(g.name, ' >> ',g2.name) nazwa
FROM groups g
LEFT JOIN groups g2 ON ( g2.parent_id = g.id )
WHERE g2.name IS NULL
ORDER BY g.name, g2.name
[/sql:1:4a3be7482a]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.