Добрый день ребята.
Для вас простой вопрос.. Для меня пока трудновато.(за исключением двух запросов=)))
Имеем таблицу user
строки
id name pol rate
нужно выбрать двух пользователей у которых максимальный рейтинг и разный пол(pol)
т.е.
Девушка - рейтинг (макс)
Парень - рейтинг(макс)
Для вас простой вопрос.. Для меня пока трудновато.(за исключением двух запросов=)))
Имеем таблицу user
строки
id name pol rate
нужно выбрать двух пользователей у которых максимальный рейтинг и разный пол(pol)
т.е.
Девушка - рейтинг (макс)
Парень - рейтинг(макс)
один с условием: мужской пол, рейтинг, ограничение в 1 строку столбца, вывести начиная с максимального
во втором только пол на женский сменить
или вам нужно это все в 1 запрос запихнуть? не уловила. да и зачем...
не срабатывает
выводит по одному человеку разного пола, но рейтинг у одного самый большой а у другого самый маленький почему то
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
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
Дело в том, что БД кэшируют запросы это раз и во время запроса идёт инициализация транзакций, прочих системных переменных и т.д. И чем больше мелких запросов, тем меньше КПД базы. И наоборот, если будет мало, но больших, да ещё и с параметрами, а не с значениями прямо в базе, тогда всё это закэшируется, так вообще будет писк.
В практическом случае такое решение понятно, конечно же.)) Извиняюсь, что не поняла пост с самого начала.)