powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select. Получить значение, если его нет - получить другое и т.д.
6 сообщений из 6, страница 1 из 1
Select. Получить значение, если его нет - получить другое и т.д.
    #39490011
Флексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые!
Помогите с запросом. Вот есть табличка Objects (id,...) с объектами недвижимости, и есть табличка Area (id,object_id,type_code,value...) с площадями этих объектов.
У объекта может быть или вообще не быть несколько площадей (записей, а не полей в Area!!!): общая/жилая/фактическая/уточненная.... (поле type_code, value - значение площади)
Можно ли вытащить по объекту его общую площадь, если её нет - жилую и т.д.
заранее неизвестно, есть ли вообще площадь у объекта, если есть, то неизвестно сколько их и какие

Спасибо!
...
Рейтинг: 0 / 0
Select. Получить значение, если его нет - получить другое и т.д.
    #39490051
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Флексей,
Можно
...
Рейтинг: 0 / 0
Select. Получить значение, если его нет - получить другое и т.д.
    #39490111
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM FIRST/LAST
...
Рейтинг: 0 / 0
Select. Получить значение, если его нет - получить другое и т.д.
    #39490484
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для справочника по type_code, нужно пронумеровать типы площадей в том порядке, в котором нужно получить результат.
Затем запрос с подзапросом.
В подзапросе соединяете объект, значение площади, ранг площадей и используете оконную(аналитическую) функцию row_number() с сортировкой по рангу в рамках каждого объекта.
Во внешнем запросе выбираете первую строку для каждого объекта
Код: plsql
1.
2.
3.
4.
select * 
from (select obj.id, ao.value, row_num() over (partition by obj.id order by ao.ord) as rn
          from Objects obj inner join Area ar inner join AreaOrd ao)
where rn = 1 
...
Рейтинг: 0 / 0
Select. Получить значение, если его нет - получить другое и т.д.
    #39490594
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2,

т.к. Флексей не знает Флексей ...
заранее неизвестно, есть ли вообще площадь у объекта ...

использование inner join не совсем корректно, лучше left join
и тогда rn = 1 тоже не совсем корректно, т.к. сулит потерей данных
...
Рейтинг: 0 / 0
Select. Получить значение, если его нет - получить другое и т.д.
    #39490761
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, тогда left join корректнее.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select. Получить значение, если его нет - получить другое и т.д.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]