Добрый день ребята.

Для вас простой вопрос.. Для меня пока трудновато.(за исключением двух запросов=)))


Имеем таблицу user

строки
id name pol rate

нужно выбрать двух пользователей у которых максимальный рейтинг и разный пол(pol)

т.е.
Девушка - рейтинг (макс)
Парень - рейтинг(макс)

@темы: PHP, Вопросы

Комментарии
19.05.2010 в 15:36

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
прочитай про GROUP BY. сразу всё станет ясно.
19.05.2010 в 16:00

эээ. просто 2 запроса.
один с условием: мужской пол, рейтинг, ограничение в 1 строку столбца, вывести начиная с максимального
во втором только пол на женский сменить

или вам нужно это все в 1 запрос запихнуть? не уловила. да и зачем...
19.05.2010 в 16:13

GROUP BY pol ORDER BY rate

не срабатывает
выводит по одному человеку разного пола, но рейтинг у одного самый большой а у другого самый маленький почему то
19.05.2010 в 16:14

Monghoter Одним запросом хотелось бы.
19.05.2010 в 16:16

маленькое щячло
DESC\ASC ,)
19.05.2010 в 16:32

Мохнорыл нет.. меняет местами только

SELECT * FROM users GROUP BY sex ORDER BY rate

Выводит
DESC
rate 800 - pol man
rate 1 - pol woman
ASC
rate 1 - pol woman
rate 800 - pol man

хотя в таблице есть woman rate 700
19.05.2010 в 16:34

маленькое щячло
сделай двумя запросами и не парься)
19.05.2010 в 16:38

Мохнорыл Хочется одним запросом. Двумя я могу сделать. Но хочется знать и УМЕТЬ как реализовать по другому.
19.05.2010 в 17:35

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
если есть индексация по rate, а она должна быть, раз мы хотим делать MAX воспользоваться можно UNION.

SELECT * FROM `user` WHERE `sex` = "man" ORDER BY `rate` DESC LIMIT 1
UNION
SELECT * FROM `user` WHERE `sex` = "woman" ORDER BY `rate` DESC LIMIT 1

или же SELECT FROM SELECT с использованием GROUP BY
19.05.2010 в 17:38

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
Monghoter, затем, что тужить базу спамом -- плохо. Потом вот берёшь, переписываешь такие запросы, и отклик от сервера в разы уменьшается.
Дело в том, что БД кэшируют запросы это раз и во время запроса идёт инициализация транзакций, прочих системных переменных и т.д. И чем больше мелких запросов, тем меньше КПД базы. И наоборот, если будет мало, но больших, да ещё и с параметрами, а не с значениями прямо в базе, тогда всё это закэшируется, так вообще будет писк.
19.05.2010 в 22:12

[revolver], ну я так понимаю автору нужна не огромная база с тучей таких запросов. :)
В практическом случае такое решение понятно, конечно же.)) Извиняюсь, что не поняла пост с самого начала.)
20.05.2010 в 11:32

Запрос с Union меня устроил. Спасибо всем кто помог.

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail