Задавайте вопросы, мы ответим
Вы не зашли.
День добрый уважаемые форумчане.
Столкнулся с проблемой, хотя опыт вроде не малый.
Есть выборка из таблицы, эту выборку необходимо сгруппировать по id так чтобы после группировки остались только записи с максимальным pohval
вот запрос.
SELECT
p_concurs.ID as id,
p_concurs.TITLE as title,
p_photo.`NAME`,
p_photo.pohval,
p_photo.ID as id_photo
FROM
p_concurs
Inner Join p_photo ON p_concurs.ID = p_photo.ID_CONCURS
WHERE
p_concurs.CLOSED = 0 AND
p_photo.pohval > 0
получаем следующее
делаю следующий запрос для группировки
SELECT id, title, pohval, id_photo FROM (
SELECT
p_concurs.ID as id,
p_concurs.TITLE as title,
p_photo.`NAME`,
p_photo.pohval,
p_photo.ID as id_photo
FROM
p_concurs
Inner Join p_photo ON p_concurs.ID = p_photo.ID_CONCURS
WHERE
p_concurs.CLOSED = 0 AND
p_photo.pohval > 0
) x GROUP BY id
в итоге получаю
где 46 имеет не верное значение, оно выбрало первое попавшееся при группировке, а нужно то что с максимальным pohval
Отредактированно svfolder (11.10.2011 17:46:22)
Неактивен
А если в первом запросе сделать групировку по ИД конкурса и выбрать MAX(p_photo.pohval) as pohval, он выдает правильный ИД фотографии?
Неактивен
К сожалению применение MAX с группировкой никак не выдаст правильный ID этой записи, проверял кучу раз, да он выдаст максимальный pohval для id но id_photo съедет.
Неактивен
до сих пор я делал подзапросы в цикле php и выяснял фотку с максимальным рейтингом но это не дает мне покоя. должно же быть решение...
Неактивен
deadka написал:
Посмотрите вот этот топик.
Посмотрел, но к сожалению не могу пока понять суть того как оно там работает и мне нужны все 3 поля (id, pohval, id_photo) а не 2
Отредактированно svfolder (12.10.2011 10:31:58)
Неактивен
Там тоже нужны три поля - id, login и time . Идея состоит в том, что выбирается пара из id/максимальный элемент, а потом уже на нее извлекается соответствующий элемент третьей колонки.
Приведите дамп ваших таблиц (структуру в виде create table и сами данные (в виде insert into...)).
Неактивен
deadka написал:
Там тоже нужны три поля - id, login и time . Идея состоит в том, что выбирается пара из id/максимальный элемент, а потом уже на нее извлекается соответствующий элемент третьей колонки.
Приведите дамп ваших таблиц (структуру в виде create table и сами данные (в виде insert into...)).
а чем выборка первой фото не подходит?
не вижу смысла приводить дамп на 10 000 записей фоток, у нас же есть уже выборка запросом, предположим это уже таблица с данными, суть вопроса не меняется.
Прикрепил дамп тестовой таблицы
Неактивен
Да, конечно тестовая таблица с результатом внешнего запроса подойдёт.
1-й mysql-способ решения:
Неактивен