Anzeigen-Fehler in PostgreSQL
Habe ich eine große Abfrage in einer PostgreSQL-Datenbank.
Die Abfrage ist so etwas wie dieses:
SELECT * FROM table1, table2, ... WHERE table1.id = table2.id...
Wenn ich diese Abfrage als sql-Abfrage, die es gibt, die wollten Zeile.
Aber wenn ich versucht, um die gleiche Abfrage verwenden, eine Ansicht zu erstellen, gibt es einen Fehler:
"Fehler: Spalte "id" angegeben, mehr als einmal."
(Ich pgAdminIII bei der Ausführung der Abfragen.)
Werde ich denke, dies geschieht, weil die Ergebnismenge mehr als eine Spalte namens "id". Gibt es da irgendwie um dieses Problem zu lösen, ohne das schreiben der Spaltennamen in der Abfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das geschieht, weil eine Ansicht hätte zwei id namens Säulen, eine aus Tabelle1 und einer aus Tabelle2, wegen dem select *.
Müssen Sie angeben, welche id Sie möchten in der Ansicht.
Die Abfrage funktioniert, da kann es gleich benannten Spalten...
Wenn nur die join-Spalten vorhanden sind (D. H. Sie haben den gleichen Namen), dann kann sich das ändern:
zu:
Wenn Sie hier sind, weil Sie versuchen, eine Funktion wie
to_date
und bekommen die "mehr als einmal definiert" - Fehler, beachten Sie, dass Sie brauchen, um eine Spalte alias für Funktionen, z.B.:Keine integrierte Möglichkeit in der Sprache, die es zu lösen (und ehrlich gesagt, * ist eine schlechte Praxis im Allgemeinen, weil es kann dazu führen, verdeckte Mängel auftreten, wie die Tabelle schemas ändern - Sie tun können, Tabelle1.*, Tabelle2.acolumn, tabl2.bcolumn wenn Sie möchten, dass alle an einem Tisch und selektiv von anderen), aber wenn PostgreSQL unterstützt INFORMATION_SCHEMA, die Sie tun können, so etwas wie:
Und fügen Sie die Ergebnisse in eine Menge sparen eingeben. Sie müssen manuell alias die Spalten, die den gleichen Namen haben, natürlich. Sie können auch code-gen eindeutige Namen, wenn Sie mögen (aber ich nicht):