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

StUV

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

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

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

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

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

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

Всем спасибо
 

Falc

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

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

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

ForJest

- свежая кровь
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;
 

StUV

Rotaredom
ForJest
супер!
огр. спасибо

(зы: ушел читать ман, чтоб догнать =)))
...
зыы: все оказалось даже проще, чем я думал
еще раз спасибо
 

Falc

Новичок
StUV
Только помни, что подобными запросами ты создашь лишнюю нагрузку на сервер.
 

StUV

Rotaredom
Falc
ok, спасибо
для данной задачи не критично, но в будущем учту при планировании структуры БД
 
Сверху