Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zliczanie podkategorii, Kategorie, podkategorie, subkategorie, działy, posty...
Mephis
post 29.11.2015, 21:22:21
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

Ostrzeżenie: (0%)
-----


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ś?

Ten post edytował Mephis 29.11.2015, 21:23:01
Go to the top of the page
+Quote Post
trueblue
post 29.11.2015, 22:16:45
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


COUNT(DISTINCT id)?


--------------------
Go to the top of the page
+Quote Post
Mephis
post 29.11.2015, 23:41:09
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

Ostrzeżenie: (0%)
-----


Zgadza się, teraz wszystko gra jak należy.
Dziękuję za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 10:53