Имеется таблица со свойствами вещей, самодостаточная:
storage(id,name,status,price,date_added,filial_id....)
данные например:
1,стол,1,4000,2015-01-07,...
2,стул,2,5000,2015-02-06,...
в ней есть переодические реквизиты, которые меняются со временем это например - поля status и price
Для того чтобы иметь возможность отслеживать эти атрибуты, была создана вторая таблица - состояний:
states (id,thing_id,status,price, state_change_date)
куда при каждой смене атрибута добавляется запись с текущими параметрами и датой смены
1,1,1,4000,2015-01-07
2,1,1,5500,2015-02-01
3,1,4,5500,2015-02-20
4,2,2,5000,2015-02-06
требуется - сделать отчет по всему хранилищу на определенную дату (да еще и по каждому статусу отдельно посчитать, но это частности)
как правильно выбрать из второй таблицы записи, которые являются ближайшими к требуемой дате, чтобы потом джойнить к ним остальные значения и считать количества?
запрос
select *,max(state_change_date) from states where state_change_date<="2015-02-01" group by thing_id
вернет со стороны max - правильный кортеж последних дат по отношению к заданной, а * выберет лишь первые записи, а не те у которых дата=макс_дате