![]() |
|
Модераторы: skyboy |
![]()
|
|
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Опять я со своими меньшими значениями в замешательстве
Есть таблица table, поле id уникальное, sub_id неуникальные. Мне нужно выбрать для каждого из имеющихся sub_id его минимальный id, например, такие данные: id sub_id 1 1 2 1 3 2 4 2 5 2 результат - строки 1 1 3 2 Запрос, так понимаю, вида:
Проблема в том, что GROUP BY работает как-то без внутренней сортировки и спокойно может выдавать верные с его позиции, но некорректные для моей задачи данные, например 2 1 5 2 Можно как-то указать ему, что он должен группировать все sub_id по минимальному соответствующему id? |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 10 Всего: 252 |
|
|||
|
||||
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
ТоляМБА, не работает, т.к., насколько я понимаю, группировка первична
|
|||
|
||||
| Kesh |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
У меня еще вот такое сработало...
Добавлено через 3 минуты и 5 секунд
А у меня его код все правильно выбирает... -------------------- ![]() |
||||
|
|||||
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
на тестовой таблице? конечно... но на конечно у меня он точно так же работает, как и без MIN это и не удивительно, все равно что запрос c WHERE условием - MIN уже будет отбирать из того, что удовлетворяет условию (а в данном случае - группировке), а не из всей таблицы ваш вариант тоже что-то не работает, но ближе уже))) Добавлено через 5 минут и 6 секунд Кароче смысл в том, что данные в файле таблицы физически находятся неоднородно (старая большая таблица, где постоянно что-то вставляется / удаляется / редактируется). GROUP BY берет первую попавшуюся строку с sub_id, остальные такие - соответственно, игнорит. В том то и проблема. Добавлено через 14 минут и 2 секунды В общем, сделал так:
Не очень, правда, нравится, пусть и решение чисто техническое, не для масс. Но все равно. У кого будет более рациональный вариант - велкам в тему! ;) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Сказки рассказываете. Запрос ТоляМБА даже теоретически не может дать неверные данные, если кто-то не лазил кривыми руками в исходник сервера БД. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 10 Всего: 252 |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
это не "не очень". Это - в топку. Таки чем не устроил вариант от ТоляМБА? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Чистая логика. Иначе почему запрос с MIN и без него возвращает одни и те же данные (не с минимальным, а с первым встречающимся значением)? Он не работает. Вообще, насколько я понимаю, то этот запрос следует трактовать как обычный:
С последующим наложением на его результаты функции MIN(). Если бы не было группировки, тогда да, область действия - все данные. По сути, оно и тут так есть - область действия все данные, но, все данные не с таблицы, а ограниченные работой GROUP BY. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Это называется не "чистая логика", а "чистый мозг". Нефиг где попало вместо перечисления нужных полей звёздочки ляпать.
Вам следует начать с чтения документации. И предполагать на основе мануала, а не по линиям на потолке. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
НЕТ!!! Задачу "выбрать для каждого из имеющихся sub_id его минимальный id" решает запрос от ТоляМБА. ЖЫРНАЯ ТОЧКА. Если запрос от Толи твоей задачи не решает, ты ее не верно сформулировал. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Akina, это лишь мои предположения, я же не утверждаю. По любой мелочи так нервничаете?
Просто не понятно, почяему тогда пример ТоляМБА, не работает с моей таблицей? В криворукости причину искать, конечно, можно... но в данном случае - вряд ли выйдет, там чистый дамп БД одной из крупнейших CMS. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Я думаю, у него таблица другая, полей поболе, и соответственно текст запроса другой. А тут он "доупрощался" до вышенаписанной ахинеи.
Добавлено через 48 секунд
Так, РЕАЛЬНУЮ структуру таблицы и НАСТОЯЩИЙ текст запроса - в студию. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| maxipub |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Akina, конечно другая. Все описывать как оно есть было бы долго, я затронул лишь суть проблемы. Ок, если говорите что запрос верный, сейчас еще раз буду все с начала разбирать и смотреть.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Тебе надо решить ПРОБЛЕМУ? да? тогда садись и долго описывай. Не помрёшь. Но и помогать тогда тебе будут именно в решении твоей проблемы, а не хрен знает чего. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |