Всем привет! Надо помощь. Немогу сделать ТОП 10 т.е. найти 10 максимальных чисел из трех столбцов таблицы: summa1, summa2, summa3 (не по отдельности а сразу из 3 столбцов) при этом не потерять ключи Подскажи в какую сторону смотреть. Может это все возможно отсортировать сразу в Mysql или придется перебирать массивы в php.
Мне мозгов хватает только на следующее: Тремя запросами вытаскиваем по 10 максимальных значений из трех столбцов. Получаем 3 двумерных массива, которые объединяем в один, из которого получаем 10 максимальных значений. Но это, скорее всего, костыль и можно сделать лучше...
Я бы обратил внимание на функцию GREATEST() https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest Код (Text): SELECT GREATEST(13,800,90);
Код (Text): SELECT id,GREATEST(summa1,summa2,summa3) as result FROM table_name ORDER BY result DESC LIMIT 10;
Ребят есть проблема. Данная функция выбирает максимальную сумму игрока. Т.е мы имеем только одну запись игрока с максимальной суммой после выполнения функции. А надо чтобы были все результаты т.е в топ 10 может быть один и тот же человек хоть 5 раз если его суммы больше других.
Проблема решена! Спасибо @alexblack! Код (Text): SELECT id,summa1 as maxVal FROM table_name UNION ALL select id,summa2 FROM table_name UNION ALL SELECT id,summa3 FROM table_name ORDER BY maxVal DESC LIMIT 10; Есть один камень с которым я столкнулся по неопытности, кому то может пригодится. При объединении таблиц, объединение надо записывать в каждый SELECT. Покажу на своем примере. Код (Text): SELECT gabl_command.img_command, gabl_games.game, gabl_games.date, gabl_players.players,gabl_resultplayers.summa1 as result FROM gabl_resultplayers INNER JOIN gabl_command ON gabl_resultplayers.id_command = gabl_command.id_command INNER JOIN gabl_games ON gabl_resultplayers.id_game = gabl_games.id_game INNER JOIN gabl_players ON gabl_resultplayers.id_players = gabl_players.id_players UNION ALL SELECT gabl_command.img_command, gabl_games.game, gabl_games.date, gabl_players.players,gabl_resultplayers.summa2 FROM gabl_resultplayers INNER JOIN gabl_command ON gabl_resultplayers.id_command = gabl_command.id_command INNER JOIN gabl_games ON gabl_resultplayers.id_game = gabl_games.id_game INNER JOIN gabl_players ON gabl_resultplayers.id_players = gabl_players.id_players UNION ALL SELECT gabl_command.img_command, gabl_games.game, gabl_games.date, gabl_players.players,gabl_resultplayers.summa3 FROM gabl_resultplayers INNER JOIN gabl_command ON gabl_resultplayers.id_command = gabl_command.id_command INNER JOIN gabl_games ON gabl_resultplayers.id_game = gabl_games.id_game INNER JOIN gabl_players ON gabl_resultplayers.id_players = gabl_players.id_players ORDER BY result DESC LIMIT 10