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

Возник вопросик ;)
Есть таблица 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
26.07.2004, 18:28
    #32621921
Sad Spirit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRUP BY - все что хочешь выбирай!..
КвиточкаПодскажите пожалуйста разгадку.
Запрос с точки зрения SQL некорректен. Сервер, менее угрёбищный чем мыскль, просто откажется его выполнять. А мыскль радостно вернёт нечто, при этом никто не гарантирует что нечто будет одним и тем же при разных запусках запроса на одинаковых данных.
...
Рейтинг: 0 / 0
27.07.2004, 15:09
    #32623500
Квиточка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRUP BY - все что хочешь выбирай!..
Спасибо, понятно.

То есть для того, чтобы решить вышепоставленную задачу, одним мускловым запросом не обойтись? Совсем невозможно ничего сделать?
...
Рейтинг: 0 / 0
28.07.2004, 07:17
    #32624365
ffox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRUP 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
28.07.2004, 20:17
    #32626164
BigBob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRUP BY - все что хочешь выбирай!..
А разве в MySql появились подзапросы? Или я чего-то путаю? Я с годик назад обращался сюда с подобныйм вопросом. Добрые люди посоветовали испольщовать временные таблицы.
...
Рейтинг: 0 / 0
29.07.2004, 08:26
    #32626370
ffox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRUP BY - все что хочешь выбирай!..
В MySQL и были подзапросы (ну по крайней мере с четвертой версии).
Только они странно работали. Т.е. в четвертой версии, если ее ставить на Win98, то все работает, под Win2000 - нет.
В пятой версии под Win2000 - вложенные запросы уже стали работать.

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

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

P.S. НИКАКИХ XP
...
Рейтинг: 0 / 0
21.08.2004, 11:53
    #32660030
GRUP BY - все что хочешь выбирай!..
это опечатка такая?
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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GRUP BY - все что хочешь выбирай!.. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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