Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: (solved) Wybieranie rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
Athlan
Witam

Potrzebuję wybrać rekordy, które występują dla danego poka jak najczęściej oraz z jak największą średnią dla innego pola.

Tabela wygląda następująco (pola):
entry_id (int: 11, primary key)
user_id (int: 11) - id użytkownika
user_value (float) - "wartość użytkownika"
user_time (int: 11) - czas dopisu rekordu

Potrzebuję wybrać jednego użytkownika sposród wszystkich rekordów, który posiada największą średnią pola user_value w ciągu 24 godzin (to z czasem umiem smile.gif ).

Problem w tym, że te rekordy mają się do jednego użytkownika po wielokroć, czyli jeden użytkownik może mieć kilka rekordów i w każdym inną wartość w user_value.

Przykładowe wpisy:

1 | 1 | 0.2 | czas jakis |
2 | 2 | 0.5 | czas jakis |
3 | 2 | 1.7 | czas jakis |
4 | 1 | 0.3 | czas jakis |
5 | 3 | 0.5 | czas jakis |

ma wybrać użytkownika o ID 2 smile.gif

Pozdrawiam, Athlan smile.gif




---- EDIT ------

Dobra zrobiłem tongue.gif

Kod
SELECT *, COUNT(vote_profile) as 'count', AVG(vote_value) as 'rating' FROM history_votes WHERE vote_time > UNIX_TIMESTAMP() - 86400 GROUP BY vote_profile ORDER BY rating DESC, count DESC LIMIT 0, 1
Indeo
Takie zapytania dobrze sie robi z wykorzystaniem podzapytań - subqueries;

Żeby zachować porządek edukacyjny można zrobić z wykorzystaniem zmiennych:
  1. #zapytanie 1 - wybranie wartości maksymalnej
  2. SET @max=(SELECT max(user_value) FROM tabela WHERE (twój warunek czasu) )
  3.  
  4. #zapytanie 2 - wybranie pozycji dla której/których wartość user_value jest ta najwyższą
  5. SELECT * FROM tabela WHERE user_value=@max AND (twój warunek czasu)

To zapytanie może zwrócić więcej niż 1 wiersz - kilka rekordów moze mieć wartość maksymalną

Oczywiście 1 zapytanie można wsadzić w drugie w miejsce zmiennej @max
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.