Frage

Die Frage ist

Which of the following methods for providing explicit names for the columns in a view work?

a. Include a column list
b. Provide column aliases in the view SELECT statement
c. Rename the columns when you select from the view

Antwort

a. Works: Include a column list
b. Works: Provide column aliases in the view SELECT statement
c. Does not work: Rename the columns when you select from the view

in Bezug auf (c), was sie durch „die Spalten umbenennen, wenn Sie aus der Sicht wählen Sie“ bedeuten kann?

War es hilfreich?

Lösung

Ich denke, die Frage in der Zertifizierungsführung schlecht formuliert. Sie können expliziten Namen Spalten geben, wenn Sie aus einer Ansicht aus, und das funktioniert:

CREATE VIEW MyView AS SELECT a, b, c FROM MyTable;
SELECT a AS d, b AS e, c AS f FROM MyView;

Das Problem ist nicht mit Aliasnamen Spalten explizit geben. Hier ist das Problem: Wenn man sich darauf verlassen, anstatt die Ansicht mit unterschiedlichen Spaltennamen definiert, und die Aussicht besteht aus einem join, so dass die Spaltennamen nicht eindeutig sind, Sie laufen in Schwierigkeiten:

CREATE VIEW MyView AS 
  SELECT m.a, m.b, m.c, o.a, o.b, o.c 
  FROM MyTable m JOIN OtherTable o;

Dies ist keine gültige Ansicht, weil in der Sichtdefinition, alle Spaltennamen unterscheiden müssen. Zum Beispiel würden Sie mehrdeutige Ergebnisse erhalten, wenn Sie die Ansicht Abfrage:

SELECT a FROM MyView;

Ist dies die erste a Spalte oder die zweite a Spalte wählen?

So haben Sie eine bestimmte Gruppe von Spaltennamen muss in der Sichtdefinition , es ist nicht genug, um sie verschieden zu machen, wie Sie die Ansicht abfragen.

Dies ist der Grund, warum ich die Zertifizierung Führungs Frage denken war schlecht formuliert. Es geht nicht um Spalten explizit umbenennen, es geht darum, sicherzustellen, dass die Spalten der Ansicht haben unterschiedliche Namen. Dies ist ein häufiger Grund für die Umbenennung Spalten, also wahrscheinlich das ist, warum die Person, die Frage schrieb es auf diese Weise zu schreiben.


So oder die andere in der Frage erwähnten Techniken kann die Mehrdeutigkeit beheben:

CREATE VIEW MyView (a, b, c, d, e, f) AS 
  SELECT m.a, m.b, m.c, o.a, o.b, o.c 
  FROM MyTable m JOIN OtherTable o;

oder

CREATE VIEW MyView AS 
  SELECT m.a, m.b, m.c, o.a AS d, o.b AS e, o.c AS f 
  FROM MyTable m JOIN OtherTable o;

In beiden Fällen erhalten Sie die aliased Spalten:

SELECT * FROM MyView; -- returns result with columns a, b, c, d, e, f

Andere Tipps

Mit dem „umbenennen, wenn Sie“ bedeuten sie sicher so etwas wie SELECT a AS b FROM theview usw. Der Grund ist es nicht für die gegebene Aufgabe „expliziten Namen Bereitstellung für die Spalten“ funktioniert ist, dass es braucht nicht explizit zu sein, ohne jeden Zweifel ihrer a in die Ansicht für Sie „umbenennen“ ... wenn Sie bereits durch Verfahren (a) oder (b) [[in diesem Fall können Sie auch „umbenennen“ auf diese Weise eindeutig gemacht habe, aber das ist ziemlich viel zweitrangig -.)]]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top