Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zapytanie do sql
Forum PHP.pl > Forum > Przedszkole
mefjiu
Witam kompletnie nie wiem jak to przepisać na język zapytania do sql poprzez php a mianowicie mam 2 tabele w jeden są kawały tabela:h1 a w 2 tabeli jest ocena tych kawałów tabela: ratings

Chciałbym w zapytaniu wyjąc 10 kawałów na które dano najwięcej głosów oraz które mają największa ocenę w jednym.

Tabela ratings
id- id kolejność
article - id kawału
rate- ocena od 1do 6
ip- ip dodającego
datum- data

tabela h1- zawierająca kawały
id -id kolejność
cat - kategoria
text- treść kawału
date- data

Proszę o pomoc jak to napisać.
gruzin
Sortuje po ilości głosów a następnie po ocenie ( odwrotnie było by bez sensu bo najwyżej był by dowcip z jednym głosem na 6 )
  1. SELECT article AS 'id', count( article ) AS glosy, avg(rate) AS ocena
  2. FROM ratings GROUP BY article
  3. ORDER BY glosy DESC, ocena DESC LIMIT 10


powinno być ok... ale jak to w sql, wszystko da się zrobić lepiej smile.gif
Kicok
Cytat
Sortuje po ilości głosów a następnie po ocenie ( odwrotnie było by bez sensu bo najwyżej był by dowcip z jednym głosem na 6 )


A teraz który dowcip będzie "wyżej" - ten który ma 50 ocen: 6, czy ten który ma 51 ocen: 1?
gruzin
OK, to nie jest dobre rozwiązanie... można by sortować po jakichś wagach dla ilości głosów i ich wartości ale jak to sensownie zrobić? Masz jakiś lepszy pomysł?
nevt
można przyjąć wskażnik:

wskaznik = liczba_glosów ^ średnia_głosów (^ - do potęgi)

przykładowe wyniki:

100 ocen, średnia 1 = 100;
10 ocen, średnia 2 = 100;
1 ocena, średnia 6 = 6;
5 ocen, średnia 3 = 125;

ogólnie - mała liczba ocen - albo niska średnia - wypadają z ratingu na koniec ...
bardzo duża liczba słabych ocen przegrywa w konfrontacji ze średnią liczbą wysokich ocen - rezultat bardziej jest zależny od wykładnika potęgi (średnia) niż od podstawy (ilość)
mokry
A po co robić jakieś wskaźniki i inne dziwne operacje, które i tak nie są adekwatne do tego co chcesz uzyskać...

Jeśli chcesz je uporządkować w odpowiedniej kolejności z uwzględnieniem stosunku ilości głosów do oceny- użyj średniej kwadratowej.

Poza tym w przykładzie podanym przez gruzin'a skoro mamy średnią arytmetyczną i ilość głosów to wystarczy posortować wyniki najpierw po średniej a potem po ilości głosów (na odwrót) i wyjdzie to co chcemy
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.