![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 31.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Hej!
W wolnych chwilach piszę niedużą aplikację do robienia rankingów na podstawie ocen. Mam to rozpisane tak, że w tabeli "rates" mam id gry i wartość oceny. I teraz, chciałbym pobierać przy każdej grze wszystkie wpisy z danym id i wyciągać średnią, ale obawiam się, że przy dużej ilości takich wpisów, to nie da rady wydajnościowo. Jak inaczej mogę to rozwiązać? Myślałem, żeby zrobić w tabeli z grami kolumnę "rate" i tam zapisywać średnią liczoną w momencie, gdy ktoś oceni tę grę. Może macie inne pomysły? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli masz dobrze skonstruowaną tabelę z wpisami, ocena jest liczbą to nie powinno być problemu - wystarczy używać zapytań w stylu:
Jeżeli wpisów masz naprawdę dużo a do tego pojedynczy rekord jest duży (dużo pól, pola tekstowe itd...) dobrym rozwiązaniem było by utworzenie dodatkowej tabeli na przechowywanie samych ocen powiązanej do wpisów po id wpisu. Wówczas działania po takiej tabeli będą dużo szybsze. Jeśli to jeszcze nie da rady - to nic nie stoi na przeszkodzie aby keszować te oceny w jakikolwiek sposób - tak by nie musiały być liczone przy każdorazowym wyświetleniu. W ogóle moim zdaniem najprościej można dodać pole sumy ocen do samego rekordu gry bądź powiązanej z nim tabelki wraz z liczbą glosow: ocena | glosow 60 12 I teraz przy każdym głosowaniu wykonujesz na tym jednym rekordzie "... SET ocena = ocena + [wybrana_ocena], glosow = glosow + 1 WHERE ..." (IMG:style_emoticons/default/smile.gif) Średnia to zawsze:
(IMG:style_emoticons/default/wink.gif) Ten post edytował Sephirus 1.06.2012, 07:45:59 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 10:16 |