@GreatWizard

Использование Внешних ключей для присоединения связанных таблиц к основной?

Здравствуйте, столкнулся с проблемой — приходится реализовывать взаимодействие с существующей системой, которая использует БД Oracle. Есть куча основных таблиц с 80-100 столбцами, многие из которых содержат в себе ключи для связанных таблиц, справочников.

Требуется написать скрипт выбирающий значения с основной таблицы, а также значения со связанных таблиц — то есть раскрыл справочники.

Задача по идее тривиальная и легко бы делалась ручками, если бы не сроки и такой огромный объём таблиц и полей.

Может есть функционал в oracle, который умеет джоинить связанные таблицы, или 3d party инструмент, который поможет сгенерить нужный скрипт.


Думаю пару иллюстраций не повредит — накидал пример:

Основная таблица:
004357f6023a077e0e6b650c418ee055.png


Её ограничения:
7ea79a419d86a21507fcdd0006825cf3.png

Внешняя таблица:
e42d7a183d2b616510a1f34408110c5a.png


Результат аналогичный, приведённому ниже:
<font color="black"><font color="#0000ff">Select</font> m.id,<br/>
&nbsp;&nbsp;&nbsp; first_field,<br/>
&nbsp;&nbsp;&nbsp; second_field,<br/>
&nbsp;&nbsp;&nbsp; --прикреплённая табличка<br/>
&nbsp;&nbsp;&nbsp; s.short_name <font color="#0000ff">as</font> second_field_short_name,<br/>
&nbsp;&nbsp;&nbsp; s.long_name&nbsp;second_field_long_name,<br/>
&nbsp;&nbsp;&nbsp; s.amount&nbsp;&nbsp; <font color="#0000ff">as</font> second_field_amount third_field,<br/>
&nbsp;&nbsp;&nbsp; fourth_field,<br/>
&nbsp;&nbsp;&nbsp; fifth_field,<br/>
<br/>
&nbsp;<font color="#0000ff">from</font> a_maintable m<br/>
&nbsp;<font color="#0000ff">left</font> <font color="#0000ff">join</font> a_ref_second s<br/>
&nbsp;&nbsp;<font color="#0000ff">on</font> m.second_field = s.ID</font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>


Плиз халп!
  • Вопрос задан
  • 3377 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Установите какой-нибудь EMS, сгенерьте общую таблицу а потом для каждой шаблонно сгинерьте SELECT INTO или просто инсерт с подзапросом… Или же я вас не правильно понял.
Ответ написан
@inittab
Не знаю, как насчет отдельного софта, но я бы в курсоре собрал бы нужные мне запросы на основе вьюх SYS.DBA_TABLES, SYS.DBA_TAB_COLUMNS, SYS.DBA_CONSTRAINTS и SYS.DBA_CONS_COLUMNS. По идее, их должно хватить.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы