CftClub.ru
Клуб специалистов ЦФТ-Банк

join в представлении

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеПт Июл 11, 2008 07:55   join в представлении Ответить с цитатой
Полезность: Нет оценки
делаю вьюху, выдираю данные в рбс... тест

Код:
select SUBJ.NAME
from
GC.DOG@RBS_LINK DOG_OVER
,GC.SUBJ@RBS_LINK SUBJ
,GC.VNPRA@RBS_LINK  LINK_DOG_DOG
,GC.REKV@RBS_LINK    REKV_ACC
,GC.DOG@RBS_LINK   DEPOSIT
,GC.ACC@RBS_LINK  ACC_TABLE
,GC.VW$ACC_FSG@RBS_LINK  ACC_SALDO
,GC.REKV@RBS_LINK     DEPOSIT_REKV
,GC.DOG_BUY@RBS_LINK  DOG_BUY
,GC.L_QUAL@RBS_LINK DEP_QUAL
,GC.REKV@RBS_LINK KR_OVER_UNUSE_ACC
,GC.VW$ACC_FSG@RBS_LINK  ACC_SALDO_VNB

inner join GC.VNPR@RBS_LINK VN_ACC_DEBT_PRC
ON ((VN_ACC_DEBT_PRC.my_objId = DOG_OVER.OBJID) and VN_ACC_DEBT_PRC.TYPE='O')

where
SUBJ.ID = DOG_OVER.SUBJ_ID
and LINK_DOG_DOG.VNESH_PR = DOG_OVER.objid
and LINK_DOG_DOG.TYPE = 'A'
and DEPOSIT.objid = LINK_DOG_DOG.my_objID
and DOG_OVER.s = REKV_ACC.s
and REKV_ACC.s = ACC_TABLE.s
and ACC_SALDO.S = REKV_ACC.S
and DEPOSIT_REKV.S = DEPOSIT.S
and DOG_BUY.DOG_ID = DEPOSIT.objid
and DEP_QUAL.objid = DOG_OVER.objid
and DEP_QUAL.NAME = 'KR_OVER_UNUSE_ACC'
and KR_OVER_UNUSE_ACC.S = DEP_QUAL.VALUE
and ACC_SALDO_VNB.S = KR_OVER_UNUSE_ACC.S


ругается в join что DOG_OVER.OBJID неизвестен...
если делаю тупо
Код:
ON ((VN_ACC_DEBT_PRC.my_objId = '93700')

все сработывает на ура....
в чем моя проблемма ?
alexiy
Профи


Вступление в Клуб: 29.06.2007
СообщениеПт Июл 11, 2008 09:46    Ответить с цитатой
Полезность: Нет оценки
а колонка DOG_OVER.objid действительно существует?...
может, она называется DOG_OVER.obj_id (по аналогии с DOG_OVER.SUBJ_ID)?...
извиняюсь, если чушь сказал, не могу знать строения GC.DOG@RBS_LINK...
_________________
two bee or not two bee
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеПт Июл 11, 2008 10:14    Ответить с цитатой
Полезность: Нет оценки
alexiy пишет:
а колонка DOG_OVER.objid действительно существует?...
может, она называется DOG_OVER.obj_id (по аналогии с DOG_OVER.SUBJ_ID)?...
извиняюсь, если чушь сказал, не могу знать строения GC.DOG@RBS_LINK...


колонка эта есть... ругается, мне кажется, на DOG_OVER, кстати без join все проходит отл, но без нужных мне данных.. поэтому и делаю соединение
molokov
Участник со стажем


Вступление в Клуб: 28.09.2007
СообщениеПт Июл 11, 2008 10:17   Re: join в представлении Ответить с цитатой
Полезность: 3
вот так попробуйте:

select SUBJ.NAME
from
GC.DOG@RBS_LINK DOG_OVER
inner join GC.VNPR@RBS_LINK VN_ACC_DEBT_PRC
ON ((VN_ACC_DEBT_PRC.my_objId = DOG_OVER.OBJID) and VN_ACC_DEBT_PRC.TYPE='O')
,GC.SUBJ@RBS_LINK SUBJ
,GC.VNPRA@RBS_LINK LINK_DOG_DOG
,GC.REKV@RBS_LINK REKV_ACC
,GC.DOG@RBS_LINK DEPOSIT
,GC.ACC@RBS_LINK ACC_TABLE
,GC.VW$ACC_FSG@RBS_LINK ACC_SALDO
,GC.REKV@RBS_LINK DEPOSIT_REKV
,GC.DOG_BUY@RBS_LINK DOG_BUY
,GC.L_QUAL@RBS_LINK DEP_QUAL
,GC.REKV@RBS_LINK KR_OVER_UNUSE_ACC
,GC.VW$ACC_FSG@RBS_LINK ACC_SALDO_VNB
--inner join GC.VNPR@RBS_LINK VN_ACC_DEBT_PRC
--ON ((VN_ACC_DEBT_PRC.my_objId = DOG_OVER.OBJID) and VN_ACC_DEBT_PRC.TYPE='O')
where
SUBJ.ID = DOG_OVER.SUBJ_ID
and LINK_DOG_DOG.VNESH_PR = DOG_OVER.objid
and LINK_DOG_DOG.TYPE = 'A'
and DEPOSIT.objid = LINK_DOG_DOG.my_objID
and DOG_OVER.s = REKV_ACC.s
and REKV_ACC.s = ACC_TABLE.s
and ACC_SALDO.S = REKV_ACC.S
and DEPOSIT_REKV.S = DEPOSIT.S
and DOG_BUY.DOG_ID = DEPOSIT.objid
and DEP_QUAL.objid = DOG_OVER.objid
and DEP_QUAL.NAME = 'KR_OVER_UNUSE_ACC'
and KR_OVER_UNUSE_ACC.S = DEP_QUAL.VALUE
and ACC_SALDO_VNB.S = KR_OVER_UNUSE_ACC.S
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеПт Июл 11, 2008 11:02   Re: join в представлении Ответить с цитатой
Полезность: Нет оценки
molokov пишет:
вот так попробуйте:

Вот оно, спс огромное, я весь sql.ru перерыл.... как говорится сочтемси Smile
belyansky
Участник со стажем


Вступление в Клуб: 22.10.2007
СообщениеСр Ноя 19, 2008 04:08    Ответить с цитатой
Полезность: Нет оценки
Добрый день всем! а вот возник вопрос как сделать представление в IBSO для просмотра данных из таблицы RBO, кто-нить поможет? заранее спасибо!!!
hornet
Участник со стажем


Вступление в Клуб: 24.07.2008
СообщениеСр Ноя 19, 2008 07:18    Ответить с цитатой
Полезность: 1
belyansky пишет:
Добрый день всем! а вот возник вопрос как сделать представление в IBSO для просмотра данных из таблицы RBO, кто-нить поможет? заранее спасибо!!!

Ну очень просто, создаешь db-link и вуаля:
select * from table@dblinkname

а вообще вот здесь можешь еще поспотреть
http://www.cftclub.ru/viewtopic.php?t=548
Vov
Участник


Вступление в Клуб: 07.11.2008
СообщениеСр Ноя 19, 2008 20:37    Ответить с цитатой
Полезность: Нет оценки
belyansky пишет:
как сделать представление в IBSO для просмотра данных из таблицы RBO


Создать дблинк ибсо-рбо, создать синоним таблица_в_рбо@дблинк, создать роль в рбо, дать грант. Работать с синонимом.
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеЧт Ноя 20, 2008 07:12   Re: join в представлении Ответить с цитатой
Полезность: Нет оценки
samsung пишет:

Вот оно, спс огромное, я весь sql.ru перерыл.... как говорится сочтемси Smile

Если ответ оказался полезным, ставьте оценку ответившему.
belyansky
Участник со стажем


Вступление в Клуб: 22.10.2007
СообщениеЧт Ноя 20, 2008 10:58    Ответить с цитатой
Полезность: Нет оценки
hornet пишет:

а вообще вот здесь можешь еще поспотреть
http://www.cftclub.ru/viewtopic.php?t=548


Спасибо! полезная ссылка оказалась, всё сделал!
Alex
Участник со стажем


Вступление в Клуб: 06.07.2007
СообщениеПт Мар 05, 2010 03:26    Ответить с цитатой
Полезность: Нет оценки
Vov пишет:

Создать дблинк ибсо-рбо, создать синоним таблица_в_рбо@дблинк, создать роль в рбо, дать грант. Работать с синонимом.

Доброго времени суток, коллеги!
Поскольку теперь "PL/SQL вставки условно запрещены" приходиться переписывать старые операции…
Подскажите, пожалуйста, как правильно прописать синоним в ИБСО (например, на таблицу Z#AC_FIN в РБО (имя линка ibso_to_retail)) и сделать из него select?
Заранее благодарю за ответы.
r00st
Эксперт


Вступление в Клуб: 14.09.2007
СообщениеПт Мар 05, 2010 06:47    Ответить с цитатой
Полезность: 1
В системных справочниках создать представление VW_SQL_AC_FIN_RBO
Код:
select ... from z#ac_fin@ibso_to_retail

Далее его можно использовать в коде PL+:
Код:
for (select x (...) in VW_SQL_AC_FIN_RBO%rowtype) loop
    null;
end loop;
Alex
Участник со стажем


Вступление в Клуб: 06.07.2007
СообщениеПт Мар 05, 2010 07:13    Ответить с цитатой
Полезность: Нет оценки
А есть ли способ напрямую (не через представление) обращаться к таблице с помощью синонима?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru