Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie podkategorii
Forum PHP.pl > Forum > Bazy danych > MySQL
Mephis
Witam.

Załóżmy, że mam taki sobie wzór struktury forum.

Tabele:
  • kategorie
  • sekcja + subsekcja (działy)
  • wątki
  • posty


Tabela kategorie, składa się z identyfikatora i nazwy.
Tabela sekcja, składa się z identyfikatora, id do rodzica sekcji, id do kategorii i nazwy.
Tabela wątki składa się z id, id do sekcji oraz nazwy.
Tabela posty składa się z identyfikatora, id do wątku i rzecz jasna treści.

Chciałbym sobie stworzyć widok kategorii, który wyświetli mi ilość sekcji (bez subsekcji), wątków i postów dla każdej kategorii.
Czyli:
id | nazwa | sekcje | wątki | posty
1 | kate1 | 3 | 4 | 11
2 | kateg2 | 5 | 2 | 0
3 | kategoria3 | 7 | 4 | 2

  1. SELECT
  2. `kat`.`kat_id` AS `id`,
  3. `kat`.`nazwa` AS `nazwa`,
  4. count(`sek`.`sek_id`) AS `sekcje`
  5. count(`wtk`.`wtk_id`) AS `watki`,
  6. count(`pst`.`pst_id`) AS `posty`
  7.  
  8. FROM `db`.`t_kategorie` `kat`
  9. LEFT JOIN `db`.`t_sekcje` `sek`
  10. ON(`sek`.`kategoria` = `kat`.`kat_id`)
  11. LEFT JOIN `db`.`t_watki` `wtk`
  12. ON(`wtk`.`sekcja` = `sek`.`sek_id`)
  13. LEFT JOIN `db`.`t_posty` `pst`
  14. ON(`pst`.`watek` = `wtk`.`wat_id`)
  15.  
  16. WHERE `sec`.`rodzic` IS NULL,
  17. GROUP BY `cat`.`cat_id`


Jeżeli w tym zapytaniu ograniczyłbym się do policzenia sekcji, to wszystko wygląda dobrze. Jeżeli dodałbym do tego wątki, to też byłoby dobrze, jeżeli nie ma żadnych postów, bo jeżeli te się pojawią, to wynik znowu jest nie taki jaki powinien.

Chciałbym, aby było to wykonane bez podzapytań... Niestety, w ten sposób wychodzą jakieś dziwne wyniki. W jaki sposób policzyć takie coś?
trueblue
COUNT(DISTINCT id)?
Mephis
Zgadza się, teraz wszystko gra jak należy.
Dziękuję za pomoc.
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.