powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GRUP BY - все что хочешь выбирай!..
14 сообщений из 14, страница 1 из 1
GRUP BY - все что хочешь выбирай!..
    #32621840
Квиточка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Возник вопросик ;)
Есть таблица A(A_id, A_category_id, A_date, A_data).
В ней - куча записей, разбитая на группы по признаку A_category_id.
Хочется получить по одной записи из каждой группы с максимальной датой (поле A_date).

Код: plaintext
1.
2.
3.
4.
SELECT 
  MAX(A_date), A_data
FROM 
  A
GROUP by A_category_id

Такой запрос возвращает действительно по последней дате для каждой группы (категории), но в поле данных A_data оказывается чушь, совершенно не связанная с датой ;(

Например:

A_id, A_category_id, A_date, A_data

1, 1, 1.1.2004, Маша
2, 1, 2.1.2004, Саша
3, 2, 1.5.2004, Паша
4, 2, 2.1.2004, Даша
5, 2, 3.3.2004, Каша

Вышеприведенный запрос возвращает:
1, 2.1.2004, Маша
2, 3.3.2004, Паша

Подскажите пожалуйста разгадку.
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32621921
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвиточкаПодскажите пожалуйста разгадку.
Запрос с точки зрения SQL некорректен. Сервер, менее угрёбищный чем мыскль, просто откажется его выполнять. А мыскль радостно вернёт нечто, при этом никто не гарантирует что нечто будет одним и тем же при разных запусках запроса на одинаковых данных.
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32623500
Квиточка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, понятно.

То есть для того, чтобы решить вышепоставленную задачу, одним мускловым запросом не обойтись? Совсем невозможно ничего сделать?
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32624365
ffox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не надо так все драматизировать. Вот так должно работать:
Код: plaintext
select * from A as b where A_date=(select max(A_date) from A WHERE A_category_id=b.a_category_id) group by A_category_id
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32626164
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А разве в MySql появились подзапросы? Или я чего-то путаю? Я с годик назад обращался сюда с подобныйм вопросом. Добрые люди посоветовали испольщовать временные таблицы.
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32626370
ffox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MySQL и были подзапросы (ну по крайней мере с четвертой версии).
Только они странно работали. Т.е. в четвертой версии, если ее ставить на Win98, то все работает, под Win2000 - нет.
В пятой версии под Win2000 - вложенные запросы уже стали работать.

К сожалению у меня небыло возможности работать под Linux, так что не могу ничего сказать о том, как они себя ведут там.

P.S. Я проверил этот запрос на системе W2k+MySQL 5.0.0 alfa - он нормально срабатывает.
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32626802
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за информацию. Пойду проверю у себя, может мне тоже уже можно всю эту котовасию со временными таблицами почеловечески переписать ;)
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32632191
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увы ;( На MySQL 4.0.14 под WinXP подзапросы не заработали ;(
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32632198
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подзапросы с версии 4.1 на всех платформах
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32633121
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понял из www.mysql.com, 4.1 сейчас только бета релиз. С ним всё нормально, можно клиенту ставить или погодить ещё?
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32633474
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBobС ним всё нормально, можно клиенту ставить или погодить ещё?
Если бы с ним было всё нормально, его бы уже объявили stable, ага?
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32634110
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот и я же про то ;( Тоесть подводя итог вышесказанному, на сегодняшний момент подзапросов в стабильно работающей версии MySQL нет.
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32636141
ffox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как нет. Читай выше... В Win98 MySQL 4.[непомню] (официальный релиз) - все работает.

P.S. НИКАКИХ XP
...
Рейтинг: 0 / 0
GRUP BY - все что хочешь выбирай!..
    #32660030
это опечатка такая?
group by должно быть внутри скобок помоему

вот так:

Код: plaintext
select * from A as b where A_date=(select max(A_date) from A WHERE A_category_id=b.a_category_id group by A_category_id)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GRUP BY - все что хочешь выбирай!..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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