#sql #postgresql
#sql #postgresql
Вопрос:
Я хочу создать представление, которое имеет 2 или более внутренних соединения в Datagrip с Postgres. Во-первых, следующий запрос не имеет проблем с выполнением:
select * from student inner join participates t on student.matrnr = t.matrnr inner join martin_classes mc on t.lvnr = mc.lvnr;
И это был бы своего рода промежуточный результат, поэтому я хочу создать его в виде представления. Но когда я пытаюсь выполнить этот запрос:
create view martin_andAll as select * from student inner join participates t on student.matrnr = t.matrnr inner join martin_classes mc on t.lvnr = mc.lvnr;
возникает следующая ошибка: [42701] ERROR: column "matrnr" specified more than once
простым решением было бы использовать ключевое USING
слово вместо ON (condition)
, но это работает только в том случае, если у меня только одно соединение. Поэтому при следующем запросе я получаю точно такую же ошибку, как и раньше:
create view martin_andAll as select * from student inner join participates t using (matrnr) inner join martin_classes mc using (lvnr);
И просто для ясности, это работает просто отлично:
create view martin_andAll as select * from student inner join participates t using (matrnr);
Поэтому мой вопрос в том, почему это не работает с несколькими соединениями и как я могу это преодолеть?
Комментарии:
1. Не используйте
select *
2. НЕ используйте
select *
— это причина вашей ошибки. НАЗОВИТЕ необходимые столбцы.3. пфф, лол…спасибо, ребята. Я искал это на многих сайтах, но не мог понять. Большое спасибо!
4. Должен ли я удалить это?