Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie produktow z danej kategorii i jej podrzednych
Forum PHP.pl > Forum > Bazy danych > MySQL
MrMag
Schemat kategorii typu: id, parent_id, nazwa, etc

Jak pobrac produkty, ktore naleza do wybranego id_kategorii oraz jej podrzednych (praktycznie 4 poziomy zaglebien - wiecej nie bedzie). Jezeli sie da to zalezy mi na 1 zapytaniu. Rekurencyjnie to bym sobie poradzil.
tomaszdurka
Mi do głowy przyszedł tylko jeden brzydki sposób.
Z subselectami ale wydajnościowo to nie wyjdzie dużo lepiej.

  1. SELECT * FROM types t1
  2. WHERE t1.parent_id IN (
  3. SELECT t2.id FROM types t2
  4. WHERE t2.parent_id IN (
  5. SELECT t3.id FROM types t3
  6. WHERE t3.parent_id IN [glowne_id]
  7. )
  8. ) OR t1.id IN (
  9. SELECT t2.id FROM types t2
  10. WHERE t2.parent_id IN (
  11. SELECT t3.id FROM types t3
  12. WHERE t3.parent_id IN [glowne_id]
  13. )
  14. ) OR t1.id IN (
  15. SELECT t3.id FROM types t3
  16. WHERE t3.parent_id IN [glowne_id]
  17. ) OR t1.id = [glowne_id]



Wydaje mi się że to zadziała i że jednak jest coś prostszego...
MrMag
wyglada na to, ze bede musial przetestowac Twoj sposob. Kobinowalem z joinami ale nie skonczylo sie to najlepiej :/
prond
Moim zdaniem powinieneś użyć innej reprezentacji drzewa kategorii np.:
- left right
- przy użyciu ścieżki
- przy użyciu zakodowanej ścieżki

Jest ładnie opisane w tym artykule http://www.dbazine.com/oracle/or-articles/tropashko4

Reprezentacja 'left right' została użyta w CakePHP dla drzewa AROs i ACOs - dzięki temu możesz znaleźć gotowy, wiarygodny kod.
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-2024 Invision Power Services, Inc.