select
з.id,
п.id,
subq.max_дата,
п.статус
from
застрахованный з,
полис п,
(select
п.id застр_id,
max(п.дата_создания) max_дата
from
полис п
group by
п.id) subq
where
з.id = п.id and
п.дата_создания = subq.max_дата
Есть таблица застрахованный(id) и полис(id, id_полиса, дата_создания, статус)
Подскажите решение следующией задачи.
Есть таблица застрахованный(id) и полис(id, id_полиса, дата_создания, статус).
Застрахованному может принадлежать несколько полисов(например, был в начале один, потом первый погасили и завели другой).
Как мне получить у каждого застрахованного полис с максимальной датой создания, причем у этого полиса выводится его статус.
Код:
в случае отсуствия альтернативного уникального ключа (id, дата_создания) в таблице полис, в выборку запроса попадут все полисы застрахованного выписанные в max_дата.
Если где ошибся, заранее мои извинения.
Оптимизаторы welcome! :)
Цитата: grgdvo
Видимо как-то так:
Код:
select
з.id,
п.id,
subq.max_дата,
п.статус
from
застрахованный з,
полис п,
(select
п.id застр_id,
max(п.дата_создания) max_дата
from
полис п
group by
п.id) subq
where
з.id = п.id and
п.дата_создания = subq.max_дата
з.id,
п.id,
subq.max_дата,
п.статус
from
застрахованный з,
полис п,
(select
п.id застр_id,
max(п.дата_создания) max_дата
from
полис п
group by
п.id) subq
where
з.id = п.id and
п.дата_создания = subq.max_дата
еще забыл соединить таблицу п с subq: and п.id=subq.застр_id