Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Top 10
Forum PHP.pl > Forum > Bazy danych > MySQL
JOHNY
Zapytańko odnośnie generowania wyników
Mam taką tablice w mysql
rattings
  1. CREATE TABLE `rattings` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `r_ip` varchar(20) NOT NULL DEFAULT '',
  4. `r_rok` varchar(10) NOT NULL DEFAULT '',
  5. `r_autor` varchar(40) NOT NULL DEFAULT '',
  6. `r_game` varchar(5) NOT NULL DEFAULT '',
  7. `r_kategoria` int(11) NOT NULL DEFAULT '0',
  8. `r_carID` varchar(10) NOT NULL DEFAULT '',
  9. `r_score` varchar(15) NOT NULL DEFAULT '',
  10. PRIMARY KEY (`id`),
  11. UNIQUE KEY `id` (`id`)
  12. );


Wyniki w tabeli
Kod
id|ip|rok|autor|game|kateg.|carid|score
1|IP-1|2005|lol|cmr2|1|2|10
2|IP-2|2005|lol|cmr2|1|2|7
3|IP-1|2005|lol|cmr2|2|3|9
4|IP-2|2005|lol|cmr2|2|3|7
5|IP-1|2005|lol2|rbr|1|2|10
6|IP-2|2005|lol2|rbr|1|2|8
7|IP-1|2005|lol2|rbr|1|4|7


Zasada działania prosta każdy oddaje głos tylko 1 raz na konkretny samochód z gry

Teraz nie wiem jak się zabrać do wyświetlenia wyników z całości i posortowania wq AVG(r_score) uwzględniając tylko wiadome ROK oraz AUTORA danego samochodu

Wynik którybym chciał osiągnąć to
Pozycja|Nick|Score
1. LOL2 - 8.33
2. LOL - 8.25

Proszę o jakieś sugestie jak się do tego zabrać - głównie mnie interesuje co napierw trzeba wyliczyć

Z góry dzięki za pomoc
wojto
  1. SELECT r_autor, AVG(r_score) AS average
  2. FROM rattings WHERE r_rok='2005'
  3. GROUP BY r_autor
  4. ORDER BY average DESC LIMIT 0, 10
questionmark.gif
JOHNY
A czy się da pogrupować coś takiego z bazy

Kod
rok |autor|game|kateg.
2005|lol  |cmr2|1  
2005|lol  |cmr2|2  
2005|lol  |cmr3|1  
2005|lol  |cmr4|2  


rok i autora przekazuje jako zmienną i chce uzyskać jak narazie sam wynik

cmr2
cmr3
cmr4

chciałem coś takiego użyć ale nie trybi
  1. $query2 = "SELECT *
  2. FROM rattings WHERE r_rok=$rok AND r_autor=$a GROUP BY r_game";


a w ostatecznej wersji będę chciał otrzymać po wybraniu z <form> taki efekt np cmr2
Kod
box1 |box2
cmr2 |1
      |2
ect. dla
cmr3 |1
i dla
cmr4 |4


czy jest to w jakiś przyjazny dla środowiska sposób wykonalne questionmark.gif
SongoQ
  1. <?php
  2. $query2 = "SELECT pola.........
  3. FROM rattings
  4. WHERE r_rok='$rok' AND r_autor='$a' GROUP BY r_game";
  5. ?>
JOHNY
Super dzięki SongoQ zapomniałem głównie o
  1. <?php
  2. Befor
  3.  r_rok=$rok AND r_autor=$a
  4. After
  5.  r_rok='$rok' AND r_autor='$a'
  6. ?>

Normalnie jak po operacji plastycznej
Ślepota postępująca smile.gif

Mam nowy problem bo chce zastosować taki wzór a nie jestem pewien czy da się to wykonać w 1 zapytaniu questionmark.gif

średnia ważona = (g / (g+m)) *s + (m / (g+m)) * S

gdzie:
s - średnia ocena dla danego filmu
g - liczba oddanych głosów na film
m - minimalna liczba głosów wymagana do uwzględnienia w TOP (min. 30)
S - średnia ocen dla wszystkich filmów
wojto
wydaje mi sie, ze nie da sie tego wykonac w jednym zapytaniu, gdyz nie da sie pobrac sredniej ocen z wszystkich filmow oraz sredniej ocen dla kazdego filmu oddzielnie w jednym zapytaniu, bo albo sie grupuje wg filmu, albo nie
dwoma zapytaniami nie powinno byc problemu
JOHNY
Troche mi się koncepcja zminiła - tak by to wyglądało w moim przypadku
TABELA

ID|ROK|AUTOR|GAME|KATEGORIA|CAR_ID|SCORES

średnia ważona (SW) = (g / (g+m)) *s + (m / (g+m)) * S

gdzie:
s - średnia oceny dla danego CAR_ID z uwzględnieniem ROK|AUTOR|GAME|KATEGORIA
g - liczba oddanych głosów na CAR_ID z j.w
m - minimalna liczba głosów ogółem jako stała czyli na 10 głosów żeby się znaleść na liście - ( w skrypcie dla sprawdzenia wymagań najlepiej wyciągnąć jako count(AUTOR) .... WHERE rok=ROK)
S - średnia wszystkich głosów na wszystko - to akurat proste
SW - średnia ważona dla poszczególnych CAR_ID wg wzoru
SR-WK - średnia dla wyników SW dla danego autora

Tylko teraz pytanie czy np za pomocą operacji na 1 tablicy można to wszystko zrobić za pomocą jednego zapytania używając LEFT JOIN questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.