Выборка макс. значения по нескольким полям

  • Автор темы Автор темы StUV
  • Дата начала Дата начала

StUV

Rotaredom
Выборка макс. значения по нескольким полям

есть таблица некоторых показателей:

id_f (int) - ид показателя
id_p (int) - ид подразделения, к которому показатель относится
id_w (int) - ид сотрудника, вводившего данные
f_data (double) - собссно значение показателя
mtime (timestamp) - время ввода данных

для сохранения истории ввода данных старые записи в тыблице не затираются, а каждый раз добавляются новые

собственно вопрос: как выбрать реальное максимальное среди всех подразделений значение показателя с определенным id_f ?

реальное - в смысле - последнее введенное значение для набора id_f,id_p (т.е. с макс. mtime)

Всем спасибо
 
StUV
>>реальное - в смысле - последнее введенное значение для набора id_f,id_p (т.е. с макс. mtime)

Чтобы не было такой проблемы надо вводить флаг для не реальных значений.

Одним запросом без вложенных подзапросов такое не делается. Как вариант решения данной задачи предлагаю сначало вытащить реальные во временную таблицу, а потом групировкой вытащить маскимальные.
 
PHP:
CREATE TEMPORARY TABLE tmp SELECT id_f, MAX(mtime) FROM tbl GROUP BY id_f;
SELECT * FROM tbl INNER JOIN tmp ON tmp.id_f = tbl.id_f AND tmp.mtime = tbl.mtime;
 
ForJest
супер!
огр. спасибо

(зы: ушел читать ман, чтоб догнать =)))
...
зыы: все оказалось даже проще, чем я думал
еще раз спасибо
 
StUV
Только помни, что подобными запросами ты создашь лишнюю нагрузку на сервер.
 
Falc
ok, спасибо
для данной задачи не критично, но в будущем учту при планировании структуры БД
 
Сверху