есть к примеру в таблице колонки id(ключ) uid(id пользователя) foto(ссылка) rate(общее колличество баллов) kolrate(колличество оценок)
Что требуется, уже не первый час потрачен на поиски решения, нужно сначало отсортировать селект по ячейке rate по убыванию выбрав самых оцененых, а затем эти же результаты еще отсортировать по kolrate в порядке возрастания(так как чем большее колличество оценок было тем меньше средний бал) и самое последнее чтобы от одного uid была только одна, но лучшая по оценке фотография
запрос что то на подобии такого но естественно правильно составленного:
SELECT * FROM fotki ORDER BY rate desc , kolrate ASC GROUP BY uid LIMIT 0,10
с групп все бы ни чего, он дает только один результат, как и надо, вот только выбирает по ключу id, а нужно чтобы он выбрал как раз таки по этой двойной выборке.
Заранее огромное спасибо если кто поможет, могу отблагодарить немного(на сколько смогу) голосами в контакте или яндексами
Спустя 1 минута, 41 секунда (10.08.2010 - 21:28) Lenarfate написал(а):
пиши условие, если то-то, то первый запрос, если то-то, то второй
Спустя 2 минуты, 58 секунд (10.08.2010 - 21:31) vantic131 написал(а):
Мне кажется толи я не совсем Вас понял то ли вы меня, я подрузумевал это как одну выборку, потому что нужно отсортировать именно по двум признакам сразу, а если в php перебирать базу то боюсь нагрузки будут неимоверными, а вы предлагаете сделать две выборки с сортировкой в php или как?
Спустя 1 минута, 21 секунда (10.08.2010 - 21:32) Lenarfate написал(а):
пихаешь выборку в две переменные и все. и ифами
Спустя 3 минуты, 10 секунд (10.08.2010 - 21:35) vantic131 написал(а):
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 2 минуты, 51 секунда (10.08.2010 - 21:38) Lenarfate написал(а):
эээ, если тебе нужна оценка, не легче ли вычислись среднее арифметическое? или я не так понял?
Спустя 11 минут, 58 секунд (10.08.2010 - 21:50) vantic131 написал(а):
Сейчас стал писать какие должно получить результаты и понял все таки что полную чуш придумал,
на самом деле думаю так было бы правильнее: при выборке разделить rate на kolrate без округления, и именно по этим сумам и отсортировать только вот тоже не представляю как это в выборке должно выглядеть без опять же перепахивания всей базы php
на самом деле думаю так было бы правильнее: при выборке разделить rate на kolrate без округления, и именно по этим сумам и отсортировать только вот тоже не представляю как это в выборке должно выглядеть без опять же перепахивания всей базы php
Спустя 10 часов, 22 минуты, 13 секунд (11.08.2010 - 08:12) linker написал(а):
Наверное как-то так
SELECT fotki1.* , fotki2.midrate
FROM fotki AS fotki1
INNER JOIN (
SELECT MAX(rate/kolrate) AS midrate, uid
FROM fotki
GROUP BY uid
) AS fotki2 ON (fotki2.uid = fotki1.uid
AND fotki2.midrate = fotki1.rate/fotki1.kolrate)
GROUP BY uid
ORDER BY fotki2.midrate DESC, fotki1.rate DESC