Задать вопрос
@Mortech

Как написать подобный sql-запрос?

Добрый день. Есть подобная задача, пока над ней есть лишь предположения.
Сам sql учу по sql-ex решая задачи(остановился на 15). Сам уже ломаю голову над ней около недели. Заранее спасибо за любые подсказки.
из попыток есть подобное, но не уверен, что это то, что нужно

SELECT id_object 
FROM ( — объекты где умер последний собственник более указанного количества месяцев
SELECT id_object, max(dead) as lastdead
FROM  —список собствеников
—- INNER JOIN др. таблицы для опр. даты смерти (dead)
INNER JOIN some tables for death date
GROUP BY id_object
HAVING max(dead) < нужная дата
) AS deadobjects

WHERE ( — на момент смерти последнего собственника не было ни одного живого зарегистрированного
NOT EXISTS ( — список живых зарегистрированных по указанному объекту на заданную дату
SELECT * FROM residence
WHERE id_residence_type =1 and begin_date<lastdead and end_date>lastdead —живые на указанную дату
AND deadobjects.id_object =id_residence.type.id_object —по указанному объекту
)
)
AND
NOT EXISTS ( —живые собственники
)

Но вот здесь не совсем понимаю, что здесь будет таблицей списком собственников и какая таблица для определения даты смерти.
Написать SQL-запрос, который вернет список объектов (id_object) где умер последний собственник более указанного количества месяцев и на момент смерти последнего собственника не было ни одного живого зарегистрированного (id_residence_type=1). При реализации следует учесть, что задание сформулировано так что должны корректно обрабатывается ситуация, когда человек умирает например 01.01.2005, а его выписывают 25.01.2005 (или забывают выписать).
Сама структура: таблица residence
id_object: NUMBER (8)
id_residence_type:NUMBER(2)
begin_date: DATE
id_agent: NUMBER(8)
id_personal_doc: NUMBER(8)
end_date: DATE
note: VARCHAR2(1000)

таблица residence_type
id_residence_type:NUMBER(2)
name:VARCHAR2(50)

dda6e0b9c0.png
b6a21b4f70.jpg
  • Вопрос задан
  • 245 просмотров
Подписаться 2 Простой 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы