Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] wyciaganie kategorii
Forum PHP.pl > Forum > Bazy danych
FiDO
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
tak samo tylko g2.name is null winksmiley.jpg
FiDO
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.