Использование объединения или объединения все в материализованном представлении, приводящее к ошибке в PostgreSQL - PullRequest
0 голосов
/ 28 ноября 2018

Я создаю материализованное представление, содержащее запрос объединения, и получаю следующую ошибку: столбец "column1" указан несколько раз.

Каковы потенциальные причины этой ошибки?

Как мне это исправить?

Вот пример того, как выглядит мой код:

CREATE MATERIALIZED VIEW schema.view_name_mv
(
     "column1",
     "column2",
     "column3"
)
as 
select 
     tn1.column1, 
     tn1.column2,
     tn1.column3
from schema.table_name1 tn1,
     schema.table_name2 tn2
where tn1.column1 = tn2.column1
and   tn1.column2  = tn2.column2
union all 
select 
     tn1.column1, 
     tn1.column2, 
     tn1.column3
from schema.table_name1 tn1, 
     schema.table_name3 tn3
where tn1.column1 = tn3.column1
and   tn1.column2 = tn3.colum2;

ПРИМЕЧАНИЕ. Запуск автономного запроса в PGAdmin 4 будет работать нормально, но использование того же запроса для создания материализованного представления приведет кошибка, указанная выше.

1 Ответ

0 голосов
/ 28 ноября 2018

Эта ошибка возникает, когда вы присоединяетесь к таблицам, и вы не указываете, какой столбец принадлежит каждой таблице, если оба столбца имеют одинаковое имя.Я предполагаю, что эти значения column1, column2 и column3 являются поддельными, и, поскольку они полны синтаксических ошибок, как показано ниже, я не могу точно знать, если вы в своем реальном коде забыли переименовать столбец.

Попробуйтеищите что-то вроде этого в вашем реальном коде:

select column1 from 
schema.table1 tn1, schema.table2 tn2 
where tn1.column1 = tn2.column2

В этом примере column1 не указано, если оно из таблицы1 или таблицы2

Sintax erros onэтот пример:

CREATE MATERIALIZED VIEW schema.view_name_mv
(
     "column1",
     "column2",
     "column3", << remove this comma
)


union all 
select 
     tn1.colum1, << the name here is wrong, replace to column1
     tn1.colum2, << the name here is wrong, replace to column2
     tn1.column3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...