Das passiert, weil eine Ansicht wegen des select *.
zwei id-benannte Spalten haben würde, eine von Tabelle1 und eine von Tabelle2Sie müssen angeben, welche ID Sie in der Ansicht haben möchten.
SELECT table1.id, column2, column3, ... FROM table1, table2
WHERE table1.id = table2.id
Die Abfrage funktioniert, weil sie gleichnamige Spalten haben kann...
postgres=# select 1 as a, 2 as a;
a | a
---+---
1 | 2
(1 row)
postgres=# create view foobar as select 1 as a, 2 as a;
ERROR: column "a" duplicated
postgres=# create view foobar as select 1 as a, 2 as b;
CREATE VIEW