Проблема с созданием представления с несколькими соединениями Postgres

#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. Должен ли я удалить это?