Skocz do zawartości

[Mysql] Lista kategori i liczba plikow ktore do nich należą


Pavel

Rekomendowane odpowiedzi

Tworzę dział download, chciałbym przy pomocy jednego zapytania otrzymać listę kategorii wraz z liczbą plików które do tej kategorii należą, nie byłoby w tym nic trudnego, ale po drodze są jeszcze podkategorie. Oto uproszczone dla celów dydaktycznych tabele: ;)

Kategorie

|-id-|-nazwa-|

Podategorie

|-id-|-id_kategorii-|-nazwa-|

Relacje

|-id-|-id_podkategorii-|-id_pliku-|

Pliki

|-id-|-nazwa-|

Jak widać każda podkategoria ma swojego rodzica i może należeć tylko do jednej kategorii głównej, Pliki za pomocą tabeli relacje mogą należeć do wielu podkategorii (a więc również do wielu kategorii głównych).

Jak na razie wymyśliłem takie oto zapytanie:

SELECT k.*, SUM(p.id=r.id_podkategorii) AS ile_plikow FROM
kategorie AS k,
relacje AS r,
podkategorie AS p,
pliki AS f
WHERE
k.id=p.id_kategorii AND p.id=r.id_podkategorii AND r.id_pliku=f.id GROUP BY k.id

Niestety nie jest ono idealne dlatego że gdy jeden plik należy do dwóch podkategorii w ramach jednej kategorii jest liczony podwójnie :/

Ma ktoś pomysł jak to rozwiązać ?

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki, wydaje się że działa OK. Wcześniej rozwiązałem problem przez zapytania zagnieżdżone, ale Twoja wersje jest zdecydowanie krótsza. :)

A tak przy okazji - jeśli liczba plików w kategorii ==0 to kategoria nie jest w ogóle zwracana, da się zrobić tak żeby była zwrócona z wartościa liczba_plikow=0 ?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności