Есть некоторые сущности, которые заполняют архив. Свойства сущности: ид, ид группы и доп.свойства (add_property). Свойства архива группы: ид сущности, дата записи архива, доп. свойства архива группы. На каждую группу есть своя таблица с архивом. Надо выбрать сущности, которые перестали заполнять архив (максимальная дата архивной записи меньше вчерашней даты) и собственно последнюю дату, на которую был архив. Таблица сущности: entity.id, entity.group_id, entity.add_property. Таблица архива группы а: a_group.entity_id, a_group.archive_date, a_group.add_property Таблица архива группы b: b_group.entity_id, b_group.archive_date, b_group.add_property и т.д. add_property разные между группами Значит для одной группы строим запрос [sql] SELECT entity.id, entity.add_property, MAX(a_group.archive_date) AS archive_date LEFT JOIN a_group ON a_group.entity_id = entity.id HAVING archive_date < '2011-06-09'[/sql] Для двух и более групп сейчас запрос строится так [sql] SELECT entity.id, entity.add_property, IF(entity.group_id=1, MAX(a_group.archive_date), MAX(b_group.archive_date)) AS archive_date LEFT JOIN a_group ON a_group.entity_id = entity.id LEFT JOIN b_group ON b_group.entity_id = entity.id HAVING archive_date < '2011-06-09'[/sql] и с увеличением групп количество условий растёт. Нормальный подход для решения задачи?) Можно ли улучшить данный вариант (возможны любые способы).