powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор старшего значения в group by
3 сообщений из 3, страница 1 из 1
Выбор старшего значения в group by
    #38955864
Виктор Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветствую!
Столкнулся с такой проблемой:
Есть 2 таблицы:
1. firms
id integer
name text
2. invoices
id integer
id_firms integer
summa float
crdata datetime
В таблице invoices хранятся к каждой фирме много платежей по принципу - дата и время платежа и сумма.
Нужно одним запросом показать все организации и сумму самой поздней оплаты вместе с её датой,например:
--
SELECT
firms.name,
invoices.crdata,
invoices.summa
FROM
firms
RIGHT JOIN invoices ON firms.id = invoices.id_firms
GROUP BY
invoices.id_firms
ORDER BY
invoices.crdata DESC
--
И вот начинается самое интересное, order by не помогает по понятным причинам, вложенные запросы помогают, но работают оооочень долго (до 300 секунд и более), пробовал ставить в селекте MAX(invoices.crdata) - выбирает самую позднюю дату, но при этом invoices.summa выбирается самая первая по таблице. Пробовал разные экзотические способы, некоторые из которых срабатывали, но время выполнения скрипта всегда шло от 300 секунд, в то время как скрипт написанный выше выполняется за менее чем секунду.
Временно решил вопрос некорректно: в цикле вывода организаций выполняется при выводе каждой организации внутренний запрос, который отдельно выбирает самую позднюю оплату из таблицы invoices, работает секунд за 10, но это полный бред.
Прошу помощи.ф
...
Рейтинг: 0 / 0
Выбор старшего значения в group by
    #38955906
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктор Н.пробовал ставить в селекте MAX(invoices.crdata) - выбирает самую позднюю дату, но при этом invoices.summa выбирается самая первая по таблице.Вы неправильно делаете группировку, посмотрите тут или тут
...
Рейтинг: 0 / 0
Выбор старшего значения в group by
    #38956165
Виктор Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю.
Пробовал всеми способами из указанных Вами ссылок, работают, но с временем выполнения запроса от 3х минут - это много, при этом всё-таки один метод очень помог:
SELECT `user_id`, max(`time`), SUBSTR(MAX(CONCAT(`time`, `post`)), 20) as `post`
FROM `test_table` GROUP BY `user_id`;
Выполняется такой скрипт мгновенно и вполне подходит под поставленную задачу, ещё раз благодарю!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор старшего значения в group by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]