Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Liczba tematów i postów w forach
peku33
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

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


Witajcie. Tworzę forum internetowe i mam problem ze stworzeniem odpowieniego zapytania do bazy.
Mam takie tabele

Forums z kluczem ForumId
Threads z kluczem ThreadId oraz indexem na ThreadId
Posts z kluczem PostId i indexem ThreadId

I teraz moje pytanie - jak do SELECT (..) FROM Forums dodać liczbę postów i tematów w tym forum

Próbowałem LEFT JOIN 2 i 3 tabelka, ale liczba nie była poprawna. Dodam, że każda z tabel ma pole Show, i powinna być zliczana tylko gdy jest ono równe 1
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Coś więcej o strukturze, bo jak dla mnie to powinno być:
Posts z kluczem na Id i ThreadId (chyba warto wiedzieć w jakim temacie jest post)
Threads z kluczem na Id i ForumId (chyba warto wiedzieć w jakim forum jest temat)
Forums z kluczem na Id
Teraz JOIN między tabelami wychodząc od Posts jako głównej i grupowanie po ForumId z tabeli Threads oraz count na odpowiednich Id. Ale to jest MAŁO optymalne bo ilość wywołań tego zapytania będzie OGROMNA. Zrób sobie lepiej jakieś dodatkowe pola związane ze statystyką w tabelach Forums i Threads. W przypadku dodawania lub odejmowania tematów i postów, zwiększaj lub zmniejszaj tu owe dane statystyczne. Inaczej zarżniesz bazę liczeniem w kółko. W takim przypadku rezygnacja z nadmiarowości w bazie ma jak najbardziej uzasadnienie. Jeśli ktoś Ci zacznie pisać bajki o normalizacji bazy to go zapytaj wtedy o wydajność, a się zamknie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 21:17