У меня проблема с оператором SQL: используя это
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
a_au.re as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
Получаю такой результат:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2200, 0
31, 10, '2010-07-14', 2205, 0
31, 10, '2010-07-14', 2206, 2
31, 10, '2010-07-14', 2207, 0
31, 10, '2010-07-14', 2210, 2
31, 10, '2010-07-15', 2211, 0
31, 10, '2010-07-14', 2213, 1
32, 10, '2010-07-14', 2203, 0
32, 10, '2010-07-14', 2204, 0
32, 10, '2010-07-14', 2208, 2
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
Теперь я хочу получить одну строку результатов для одной комбинации идентификатора и даты. Также я хочу получить эту строку результатов с наивысшим номером RE.
Итак, я пишу свое заявление:
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
max(a_au.re) as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
group by ID, date
Теперь я получаю такой результат:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2213, 0
31, 10, '2010-07-15', 2211, 0
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
Кажется, все в порядке, у меня одна строка результатов за день / комбинация идентификаторов и строка с наибольшим номером RE. Но: столбец STAT не имеет правильных значений! Ряд
31, 10, '2010-07-14', 2213, 0
должен иметь статус 1:
31, 10, '2010-07-14', 2213, 1
Значит, в моем заявлении должна быть ошибка. Кажется, что MySQL берет первое найденное значение столбца STAT. Но я хочу иметь соответствующий.
Что я должен делать? Я видел другие темы об этом, например здесь: Выбор всех соответствующих поля с использованием MAX и GROUP BY, но я не могу передать его в свой оператор SQL.
Заранее большое спасибо и С наилучшими пожеланиями.
greatest-n-per-group
. Нажмите на этот тег, чтобы увидеть десятки других сообщений с похожими проблемами. - person Bill Karwin   schedule 14.07.2010