Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie do zapytania
quizer
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 20.06.2010

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


Witam, mam następujące zapytanie:

  1. SELECT artykuly.id, artykuly.tytul, artykuly.krotki, artykuly.DATA, artykuly.img, uzytkownicy.nick, kategorie.opis FROM artykuly INNER JOIN uzytkownicy ON artykuly.uzytkownik = uzytkownicy.id INNER JOIN kategorie ON artykuly.typ = kategorie.id INNER JOIN komentarze ON artykuly.id = komentarze.artykul ORDER BY DATA DESC LIMIT 0, 10


Chciałbym dodać do tabeli wyjściowej jeszcze jedną kolumnę w której będą policzone komentarze dla danego artykułu (count(komentarze.id)). Nie bardzo wiem jak się za to zabrać by dla każdego artykułu był podliczone tylko jego komentarze. Dla pojedyńczego artykułu takie zapytanie wyglądałoby tak:

  1. SELECT count(komentarze.id), artykuly.id, artykuly.tytul, artykuly.krotki, artykuly.DATA, artykuly.img, uzytkownicy.nick, kategorie.opis FROM artykuly INNER JOIN uzytkownicy ON artykuly.uzytkownik = uzytkownicy.id INNER JOIN kategorie ON artykuly.typ = kategorie.id INNER JOIN komentarze ON artykuly.id = komentarze.artykul WHERE komentarze.artykul = 3 ORDER BY DATA DESC LIMIT 0, 10


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


B i C łamie zasady normalizacji. Co nam zostaje?

Czy lepiej liczyć za każdym razem, czy trzymać w dodatkowej kolumnie i odświeżać, czy cachować w tabeli MEMORY albo w inny sposób, to wszystko zależy od tego jak bardzo ta operacja obciąży Ci bazę.

Masz do rozważenia dwa czynniki:
1. Jak często zmieniają się dane do liczenia średniej
2. Jak często potrzebna Ci jest średnia

Jeżeli ta średnia potrzebna Ci jest sporadycznie, to nie ma co sobie bazy zaśmiecać dodatkowymi konstruktami, lepiej ją policzyć.
Jeżeli średnia potrzebna Ci jest często, a dane do liczenia zmieniają się stosunkowo żadko, wygodnie jest zrobić sobie dadatkową kolumnę z wynikiem.
Jeżeli średnia potrzebna jest często a dane do liczenia zmieniają się równie często, warto zastanowić się nad jakimś mechanizmem cache'ującym gdzie średnia będzie odświeżana np raz na minutę.
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: 4.10.2025 - 15:48