Сортировка и группировка - MySQL
Формулировка задачи:
Добрый день. Код привожу с сокращениями. Делаю запрос:
MySQL выдаёт что-то вроде:
Необходимо сгруппировать вывод запроса по полю ord с одновременной сортировкой по полю job_date. Делаю так:
Но на выходе получаю :
Т.е. вне зависимости от типа сортировки по полю job ( ASC/DESC ), при группировке по полю ord, в результирующий вывод запроса вставляется не самое большое значение, а какое-то предыдущее. Можно, разумеется, это разрулить последующей обработкой в PHP, но неужели нет нормального решения средствами SQL? Поискал в сети, вопрос не новый, но работающего решения я не нашёл. Выбрать по MAX(job) - не выход, в реальной базе ещё много нужных полей и нужна строка целиком. Работаю с MySQL.
SELECT operitems.ORD ord, job.DATE job_date, job.ID job_id FROM okb_db_operitems operitems LEFT JOIN okb_db_job job ON operitems.ID = job.ID_operitems WHERE operitems.ID_zakmod=19582 ORDER BY ord, job_date DESC
ord job_date job_id 5 20160324 109869 5 20151209 109530 10 20160324 109531 10 20151223 109529 15 NULL NULL 20 20160301 105075 20 20160229 105515 25 20160301 105076 25 20160229 105516 30 NULL NULL
SELECT * FROM ( SELECT operitems.ORD, job.DATE, job.ID FROM okb_db_operitems operitems LEFT JOIN okb_db_job job ON operitems.ID = job.ID_operitems WHERE operitems.ID_zakmod=19582 ORDER BY ord, job_date DESC ) tbl GROUP BY ord
ord job_date job_id 5 20151209 87492 10 20151223 90464 15 NULL NULL 20 20160301 105075 25 20160301 105076 30 NULL NULL
Решение задачи: «Сортировка и группировка»
textual
Листинг программы
SELECT operitems.ORD, job.DATE FROM okb_db_operitems.operitems LEFT JOIN okb_db_job job ON operitems.ID = job.ID_operitems WHERE operitems.ID_zakmod=19582 GROUP BY ord ORDER BY job_date
Объяснение кода листинга программы
- SELECT operitems.ORD, job.DATE
- FROM okb_db_operitems.operitems
- LEFT JOIN okb_db_job job ON operitems.ID = job.ID_operitems
- WHERE operitems.ID_zakmod=19582
- GROUP BY ord
- ORDER BY job_date
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д