Максимальный элемент MAX в базе данных MySQL

В некоторых случаях, при работе с таблицей баз данных MySQL, требуется выбрать максимальные данные из того или иного столбца.

Конечно первое что приходит в голову это использовать оператор ORDER BY (упорядочивания) отсортированный от большего к меньшему:

SELECT `id` FROM `db`.`table` ORDER BY `id` DESC LIMIT 0,10;

Но бывают ситуации, где это выражение не решает поставленную перед программистом задачу.

Условие задачи – есть таблица базы данных:

id title category price
1 Ростишка Йогурты 57
2 Микоян Колбаса 98
3 Чудо Йогурты 43
4 Останкино Колбаса 79
5 Данон Йогурты 59
6 Бавария Пиво 62

При этом нужно выбрать из таблицы самый дорогой йогурт , самую дорогую колбасу и самое дорогое пиво.
Если сделать выборку так:

SELECT `title` FROM `db`.`table` ORDER BY `price` DESC;

Получим на первом месте колбасу Микоян, на втором месте колбасу Останкино, на третьем месте пиво Бавария и так далее.

Вот здесь нам и пригодится MySQL функция  MAX() , которая выбирает максимальные значения из столбца. Плюс к ней – оператор группирования данных GROUP BY.

SQL запрос , решающий поставленную задачу, будет выглядеть следующем образом:

$sql = "SELECT * , MAX(`price`) AS `maximum` FROM `db`.`table` GROUP BY `category` ORDER BY `maximum` DESC";

С помощью оператора AS (как) , мы налету записали результат функции MAX(`price`) в переменную с индексом `maximum`.

Теперь остался вывод результатов с помощью mysql_fetch_array():

$query = mysql_query($sql); // Делаем SQL запрос
while($arr=mysql_fetch_array($query)){
/* в безусловном цикле WHILE записываем результаты в массив $arr и сразу выводим на печать */
echo $arr['title']." - самый дорогой продукт в категории ".$arr['category']." - его цена ".$arr['maximum']."<br />";
}

Микоян – самый дорогой продукт в категории колбаса – его цена 98
Бавария – самый дорогой продукт в категории пиво – его цена 62
Данон – самый дорогой продукт в категории йогурт – его цена 59

Результат – мы не просто узнали самый дорогой продукт в каждой категории , но и сами категории расставили от самой дорогой к самой дешевой.

Опубликовано 03.10.2013 в 04:57 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: MySQL, PHP программирование · Теги: , , , , , , , , ,