min() теряет связь со строкой... и не всегда срабатывет.

Pin

Новичок
min() теряет связь со строкой... и не всегда срабатывет.

Здравствуйте.
Какая-то странная проблема - при использовании group by + min(field) не всегда выводятся правильные результаты. Тогда решил сделать по-другому,

сделать выборку *, мин(поле) - ведь в этом случае строка, занесенная в * должна быть со занчением мин(поле) и содержать его.

SELECT *, MIN(c) FROM table1 GROUP BY b ORDER BY b
где table1 - таблица с полями
a - группа
b - деталь
c - вес

В одних случаях min(c) не работает, значение находится в *, иногда - там неправильное значение, оно выбирается через функцию, иногда результаты в полях совпадают.

Что за глюк? Ещё ведь при этом код иногда слетает на соседние позиции! почему выборка строки слетает на соседние позиции то по одному полю, то по-другому?
Кодировка таблиц 1251, при отмененных дефолтах то же самое...
 

Найч

Алгоритмик :-)
MIN - агретагная функция. Она не может знать, что ты еще захочешь вытащить.
Вот тебе пример
SELECT *, MIN(c),MAX(c) FROM table1 GROUP BY b ORDER BY b
Что должно быть в результате?
 

Pin

Новичок
А разве нет такой зависимости - вытащить всю строку, где содержится min(c)??? Если нет, то как сделать?
where результатов вообще не дает, having усекает список, в обоих случаях min(c) like c.

-~{}~ 21.01.05 21:29:

Про вопрос: чего-то будет... не проверял :)
 

Pin

Новичок
В мане тет способа указать - выбрать ряд, где минимальное значение при группировке по этому слову. Только через доп. запрос.

А все-таки, помему функция мин() не всегда выбирает минимальное значение из группы??? Может, есть какие-то настройки (как кодировка для букв, что-то вроде этого)?

-~{}~ 22.01.05 15:02:

забыл - я смотрел вот этот раздел, это не ман а обучалка. В мане вообще про связь мин() и строки нету.
http://dev.mysql.com/doc/mysql/en/example-Maximum-row.html
 

Фанат

oncle terrible
Команда форума
В мане вообще про связь мин() и строки нету.
а откуда такая связь вообще возьмется?
как ее строить? по какому признаку?
В смысле - как база сама догадается? телепатию в бд еще не встроили.

Если надо запросить ряд с неким значением, соответствующим некоей выборке , то для этого служат объединения таблиц.

-~{}~ 22.01.05 15:27:

что, впрочем, не гарантирует тебя от плавания, если минимальный результат будет в более, чем одной строке
 

Screjet

Новичок
Отделяй всегда групповые запросы (в которых групповые ф-ции) от запросов на поиск данных.
 
Сверху