Question

la question est

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

répondre

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

en ce qui concerne (c) qu’entendent-ils par "renommer les colonnes lorsque vous sélectionnez dans la vue"?

Était-ce utile?

La solution

Je pense que la question du guide de certification est mal formulée. Vous pouvez donner des noms explicites aux colonnes lorsque vous sélectionnez une vue, et cela fonctionne:

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

Le problème n’est pas de donner des alias aux colonnes explicitement. Voici le problème: si vous vous basez sur cette option au lieu de définir la vue avec des noms de colonne distincts et que la vue consiste en une jointure telle que les noms de colonne soient ambigus, vous rencontrez des problèmes:

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

Ceci n'est pas une vue valide, car dans la définition de la vue, tous les noms de colonnes doivent être distincts. Par exemple, vous obtiendrez des résultats ambigus lorsque vous interrogez la vue:

SELECT a FROM MyView;

Ceci sélectionne-t-il la première colonne a ou la deuxième colonne a ?

Donc, vous devez avoir un ensemble distinct de noms de colonnes dans la définition de la vue , il ne suffit pas de les rendre distincts lorsque vous interrogez la vue.

C’est la raison pour laquelle je pense que la question du guide de certification était mal formulée. Il ne s'agit pas de renommer explicitement les colonnes, mais de s'assurer que les colonnes de la vue ont des noms distincts. C’est une raison courante pour renommer les colonnes, c’est probablement pour cette raison que la personne qui a rédigé la question l’a écrite de cette façon.

L'une ou l'autre des techniques mentionnées dans la question peut résoudre l'ambiguïté:

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;

ou

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;

Dans tous les cas, vous obtenez les colonnes avec alias:

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

Autres conseils

Par & renommer lorsque vous sélectionnez " ils veulent sûrement dire quelque chose comme SÉLECTIONNER un AS b dans la vue , etc. La raison pour laquelle cela ne fonctionne pas pour la tâche donnée consistant à "fournir des noms explicites pour les colonnes" est qu'il ne doit pas nécessairement y avoir de a explicite et sans ambiguïté dans la vue pour vous permettre de "renommer" ... SAUF que vous ayez déjà été désambiguïsé par les méthodes (a) ou (b) [[dans laquelle Dans ce cas, vous pouvez également " renommer " De cette façon, mais c'est à peu près une question secondaire! -)]].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top