2013-06-27 2 views
0

Работа в Oracle SQL Developer (3.2.20.09).oracle sql: выбор полей из двух представлений без перекрытия полей

Мне нужно создать представление из двух источников. Например, Поля 1-3 существуют в View A и Fields 4-6 существуют в представлении B. Существует нулевое перекрытие. Я не могу выбрать оба представления и вытащить все их поля в последующее представление, потому что в сочетании они имеют слишком много полей (два представления источника хорошо сочетаются с полными полями, разрешенными в одном представлении).

Можно ли рассказать о моей процедуре пакета pl/sql: получить это поле из поля зрения A. Если его нет, перейдите к просмотру B?

Или лучшее решение для использования all_tab_columns или другого решения meta (?), Посмотрите, кто владеет полем 1 и возьмите его оттуда?

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

Или есть просто лучший третий вариант?

+0

Можно ли уменьшить количество столбцов в виде А и В? Я не могу придумать, почему было бы * много * столбцов. Сотни, ок, но тысячи? –

+0

Определенно невозможно. Это, безусловно, не мой призыв. – lostinthebits

+0

Извините, просто прошу. Тогда у меня нет решения. Но только из профессионального интереса, как у вас может быть столько столбцов, какие данные хранятся в этих представлениях? –

ответ

0

Невозможно создать вид с более чем 1000 колонками. Если общее число столбцов вашего вида А и В меньше, вы можете просто создать третий вид, используя SQL в листе:

CREATE OR REPLACE VIEW view_3 (f1, f2, f3, f4, f5, f6) 
AS 
SELECT a1, a2, a3, NULL, NULL, NULL FROM view_a UNION ALL 
SELECT null, null, null, b4, b5, b6 FROM view_b; 
+0

Мой первоначальный вопрос не был хорошо написан. Я бы сказал: «Например, поля 1-3. На самом деле каждый из двух исходных представлений занимает гораздо больше трех полей и, когда они объединены, превышает предел Oracle. – lostinthebits

+0

Хау? Таблица Oracle может иметь 1000 столбцов, не уверенных в взгляды. Ваши взгляды близки к этому? –

+0

Просто попробовал, в представлении может быть и 1000 столбцов. После этого возникает ошибка «ORA-01792: максимальное количество столбцов в таблице или представление 1000» –