Как вывести только максимальное значение - MySQL
Формулировка задачи:
На картинке есть дизайн запроса
Сам запрос кодом выглядит так
Надо сделать так чтоб показал только один idstatus самый максимальный к примеру для заказа 5577 Это 7
а для заказа 12780 это 6
То есть по каждому заказу только одну строчку с максимальным статусом заказа (То есть с последним присвоенным)
SELECT zakaz.idzakaz, SUM(stroka_zakaza.kol * price.price) AS summa, history_status.datatime, sotrudnik.familiya, sotrudnik.imy, sotrudnik.otchestvo, status_zakaz.name, history_status_1.idstatus FROM zakaz LEFT OUTER JOIN stroka_zakaza ON zakaz.idzakaz = stroka_zakaza.idzakaz LEFT OUTER JOIN price ON stroka_zakaza.idprice = price.idprice LEFT OUTER JOIN history_status ON zakaz.idzakaz = history_status.idzakaz LEFT OUTER JOIN sotrudnik ON history_status.idsotr = sotrudnik.idsotrudnik LEFT OUTER JOIN history_status history_status_1 ON zakaz.idzakaz = history_status_1.idzakaz LEFT OUTER JOIN status_zakaz ON history_status_1.idstatus = status_zakaz.idstatus_zakaz WHERE zakaz.idklient = 21 AND history_status.idstatus = 1 GROUP BY zakaz.idzakaz, history_status_1.idstatus ORDER BY zakaz.idzakaz
Решение задачи: «Как вывести только максимальное значение»
textual
Листинг программы
SELECT zakaz.idzakaz, SUM(stroka_zakaza.kol * price.price) AS summa, history_status.datatime, sotrudnik.familiya, sotrudnik.imy, sotrudnik.otchestvo, (SELECT status_zakaz.name FROM history_status INNER JOIN status_zakaz ON history_status.idstatus = status_zakaz.idstatus_zakaz WHERE history_status.idzakaz = zakaz.idzakaz ORDER BY history_status.id DESC LIMIT 1) AS expr1 FROM status_zakaz, zakaz LEFT OUTER JOIN stroka_zakaza ON zakaz.idzakaz = stroka_zakaza.idzakaz LEFT OUTER JOIN price ON stroka_zakaza.idprice = price.idprice LEFT OUTER JOIN history_status ON zakaz.idzakaz = history_status.idzakaz LEFT OUTER JOIN sotrudnik ON history_status.idsotr = sotrudnik.idsotrudnik WHERE zakaz.idklient = 21 AND history_status.idstatus = 1 GROUP BY zakaz.idzakaz ORDER BY zakaz.idzakaz
Объяснение кода листинга программы
Представленный SQL-код выполняет следующую задачу: он выбирает заказы клиента с ID 21, для которых статус заказа равен 1, и вычисляет их общую сумму. Код также выводит информацию о сотруднике, который сделал заказ, и дату и время изменения статуса заказа. Вот список действий, которые выполняет код:
- Выборка данных из таблицы
zakaz
и соответствующих таблицstroka_zakaza
,price
,history_status
иsotrudnik
. - Вычисление общей суммы каждого заказа с помощью функции
SUM()
. - Выборка имени статуса заказа из таблицы
status_zakaz
. - Сортировка результатов по ID заказа в порядке убывания.
- Ограничение результатов до одного заказа с помощью оператора
LIMIT
. - Группировка результатов по ID заказа.
- Сортировка результатов по ID заказа. Пожалуйста, обратите внимание, что список действий может быть неполным, и для полного понимания кода рекомендуется изучить его в контексте соответствующей базы данных и ее структуры.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д