Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL] Jak pobrać z kolumny 10 rekordów, które powtarzają się najczęściej ?
piotrek1984
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Witam,

Mam malutki problem, chciałbym pobrać z kolumny np. 10 rekordów najczęściej powtarzających się. W kolumnie zapisywany jest id artykułu. Będę próbował napisać skrypt, który wyświetli najczęściej komentowane artykuły. Panowie, dobrze zaczynam kombinować ? (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
Panowie, dobrze zaczynam kombinować ?

Źle.
W tabeli z artykułami dajesz kolumne 'komentarze', którą inkrementujesz po każdym dodanym komentarzu (dla odpowiedniego artykułu).

Potem wystarczy tylko:
  1. SELECT * FROM artykuly ORDER BY komentarze DESC LIMIT 0,10


Twój sposób spwodowałby, że za każdym razem musiałbyś bawic się w grupowanie w tabeli z komentarzami po ID artykułu, którego dotyczą, potem JOIN-owanie danych z tabeli 'artykuły' po tym ID i podobne rzeźby.
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


count
group by
SELECT / LIMIT
Go to the top of the page
+Quote Post
cojack
post
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat
W tabeli z artykułami dajesz kolumne 'komentarze', którą inkrementujesz po każdym dodanym komentarzu (dla odpowiedniego artykułu).


Źle.

Tworzysz osobną tabelę dla komentarzy artykułów. Count na id komentarzy dla danego id artykułu i tak jak wyżej orderby na tego counta i limit.

Go to the top of the page
+Quote Post
VGT
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Cytat(cojack @ 2.02.2010, 14:40:18 ) *
Tworzysz osobną tabelę dla komentarzy artykułów. Count na id komentarzy dla danego id artykułu i tak jak wyżej orderby na tego counta i limit.

Czyli powtorzyles dokladnie to, co napisal blooregard w ostatniej linijce, tylko że...

Dobrze.

Jeśli tworzysz bloga, którego dziennie odwiedzisz Ty i dwóch znajomych.

Źle.

Jeśli tworzysz strone, która będzie miała do czynienia ze sporym obciążeniem (zarówno wyświetlenia jak i ilość zgromadzonych danych). Wtedy rozwiązanie blooregard'a jest o wiele lepsze.

Ten post edytował VGT 2.02.2010, 16:41:29
Go to the top of the page
+Quote Post
blooregard
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
@cojack:

Źle.

Tworzysz osobną tabelę dla komentarzy artykułów. Count na id komentarzy dla danego id artykułu i tak jak wyżej orderby na tego counta i limit.

Taa, jasne.

Ja CELOWO pominąłem dywagacje na temat tabeli na komentarze, bo nie o nią tu chodziło, tylko o sposób, w jaki uzyskać 10 artów najczęściej komentowanych, a rozwiązanie z dodatkowym polem w tabeli z artykułami inkrementowanym po każdym dodaniu/dekrementowanym po każdym usunięciu komentarza jest jedynym, które eliminuje konieczność używania COUNT, GROUP BY i innych f-cji. Wiadomo, że musi być tabela, aby było gdzie te komentarze przechowywać i innego sposobu sobie nie wyobrażam, jak tylko utworzyć osobną tabele w tym celu.

A jedna operacja UPDATE przy dodaniu/usunięciu komentarza jest niczym w porównaniu z każdorazowym COUNT + GROUP BY przy wchodzeniu odwiedzających na stronę zawierającą takie zestawienie 10-ciu najczęściej komentowanych.

Generalnie nie będe tu przecież przedstawiał całej struktury bazy danych, bo musiałbym też napisac o tabeli 'users'; przechowującej dane użytkowników, tabeli 'user_to_komentarz' tworzącej relację wskazującą, kto który komentarz dodał, tabeli 'logs' zapisującej kto, z jakiego IP i kiedy ten komentarz dodał, tabeli 'history_details', w której zapisywane byłyby wszystkie zmiany w komentarzach edytowanych przez adminów/modów wraz z ID komentarza, data i czasem dokonanej zmiany, treścią sprzed edycji..... mam wymieniac dalej?

Ten post edytował blooregard 2.02.2010, 16:56:13
Go to the top of the page
+Quote Post

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: 22.08.2025 - 15:18