Mam system oceniania zdjęć na stronie, który buduje mi potem TOP 30.
TOP 30 mogę przeglądać wg płci osób głosujących. Czyli mozemy zobaczyc jak głosowały Panie a jak Panowie.
Na tę chwilę działa mi to bez zarzutów. Przykład. Wyciągam z bazy srednią ocen Panów. Zdjęcia muszą mieć już przynajmniej 10 głosów. Sortuje od tych które mają najwyższa średnią i ograniczam ilosc zdjęc do 30:
SELECT t.photo_id, t.user_id, t.sex, FORMAT(AVG(t.rate),2) AS rate, COUNT(t.photo_id) AS num FROM (SELECT r.photo_id AS photo_id, p.user_id AS user_id, per.sex AS sex, r.rate AS rate, p.file_name AS file_name FROM photo_rates r, user_photos p, personal_details per WHERE r.photo_id=p.id AND per.user_id=r.user_id AND per.sex='m') AS t GROUP BY t.photo_id HAVING num>10 ORDER BY rate DESC LIMIT 30
Teraz mam to przerobić. Chodzi o to że zmieniam warunek.... dalej interesują mnie zdjęcia które mają przynajmniej 10 ocen, ale dodatkowo chodzi o to żeby średnia była wyliczona na podstawie tylko 10 ostatnich ocen....
Czyli np. mam zdjecie które ma 15 ocen wiec sie ono kwalifikuje, ale średnia ocena wyliczana jest tylko i wyłacznie na podstawie ostatnich 10 ocen....
Mam nadzieje ze jest to zrozumiałe.
Niestety nie wiem jak to ugryźć. Oczywiście mogłbym sie bawić w PHP i oprzec to o jakies tablice i pętle... ale chciałbym to zrobić ładnie w zapytaniu mysql.
Ktoś chętny żeby pomóc?
Pozdrawiam,
geogis