문제

질문은 ~이야

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

대답

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

(c) "보기에서 선택할 때 열의 이름을 바꾸는 것"이란 무엇을 의미합니까?

도움이 되었습니까?

해결책

인증 안내서의 질문은 제대로 사용되지 않았다고 생각합니다. 너 ~할 수 있다 보기에서 선택할 때 열에 명시 적 이름을 제공하면 다음과 같이 작동합니다.

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

문제는 열에 별명을 명시 적으로 제공하는 것이 아닙니다. 문제는 다음과 같습니다. 뚜렷한 열 이름으로보기를 정의하는 대신 이에 의존하고 뷰가 조인으로 구성되어 열 이름이 모호하여 문제가 발생합니다.

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

뷰 정의에서 모든 열 이름은 구별되어야하기 때문에 이것은 유효한보기가 아닙니다. 예를 들어보기를 쿼리 할 때 모호한 결과를 얻을 수 있습니다.

SELECT a FROM MyView;

이것이 첫 번째를 선택합니까? a 열 또는 두 번째 a 열?

따라서 뚜렷한 열 이름 세트가 있어야합니다. 보기 정의에서,보기를 쿼리 할 때 구별되는 것만으로는 충분하지 않습니다.

이것이 인증 안내서 질문이 제대로 표시되지 않았다고 생각하는 이유입니다. 그것은 열을 명시 적으로 이름을 바꾸는 것이 아니라보기의 열에 뚜렷한 이름을 갖도록하는 것입니다. 이것은 열을 이름 바꾸는 일반적인 이유이므로 아마도 질문을 작성하는 사람이 그렇게 쓴 이유 일 것입니다.


질문에 언급 된 다른 기술 중 하나는 모호성을 해결할 수 있습니다.

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;

또는

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;

어느 쪽이든, 당신은 별칭 열을 얻습니다.

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

다른 팁

"선택할 때 이름 바꾸기"로 그들은 반드시 같은 것을 의미합니다. SELECT a AS b FROM theview 등. a 당신이 "이름 바꾸기"... 당신이 이미 방법 (a) 또는 (b)에 의해 명확하지 않은 한 " 또한 "이름 바꾸기"이 방식이지만, 그것은 거의 보조 문제입니다!-)].

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top