2012-09-15 3 views
-1

그래, 특정 필드를 3 개의 다른 필드 합계와 같게 만드는 방법을 찾고 있습니다. 나는 3 개의 다른 등급 필드를 가지고있다. 그리고 나는 '자동적으로 다른 등급의'필드를 가지게된다. 나는 select 문을 사용하여 값을 검색하는 방법을 알고있다. 탁자. - 특수 MySQL의SQL 자동 파생 필드

+2

: 가장 일반적인 같은 예를 들어,이 작업을 수행하는 방법 (대부분의 DBMS 작업), 아직 아마 당신의 요구에 가장 적합한는 (어떤 데이터베이스 구조적인 변화가 필요 없음) 뷰를 작성한다? 어떤 것은 테이블에서 계산 된 컬럼을 정의하게하고 다른 것들 (예 : MySQL)에서는 트리거를 사용해야한다. – McGarnagle

+0

postgresql은 다른 인기있는 무료 데이터베이스 인 계산 된 열을 지원하지 않기 때문에 다른 기능을 사용해야 할 가능성이 큽니다. 예 : 뷰 또는 트리거를 사용합니다. 열을 선택하기 만하면 select 문에서 수행하는 것이 좋습니다. 효율성을 위해 정렬해야하는 경우 식에 인덱스를 만듭니다. – ronalchn

+0

MySQL을 사용하여, 미안합니다 – cameronjonesweb

답변

2

예를 가상 컬럼에 대해 서로 다른 DBMS의에서이 작업을 수행하는 다양한 방법, 오라클의

있습니다

overall NUMBER GENERATED ALWAYS AS (rating1 + rating2 + rating3) VIRTUAL 

SQL Server의 : Unfortunatelly

[overall] AS (rating1 + rating2 + rating3) PERSISTED 

은 모든 DBMS가 가상 열을 지원하는 것은 아닙니다. 당신이 사용하고있는 RDBMS

CREATE VIEW ratings_overall AS 
    SELECT rating1, rating2, rating3, (rating1 + rating2 + rating3) as overall 
    FROM source_table; 
+0

나는 MySQL을 사용하고 있으며 이미 테이블에 열이 설정되어 있습니다. 정확히 작동 시키려면 어떤 쿼리를 실행해야합니까? 아니면 전혀 작동합니까? 만들기보기가 잘 작동, 그것은 같은 테이블에 그것을 그냥 좋네요 – cameronjonesweb

+0

당신이 할 수있는 두 가지, 하나를 삽입하는 동안 적절한 가치를 넣어 ('INSERT INTO your_table (..., rating1, rating2, rating3, 전체적으로) (13, 15, 54, (13 + 15 + 54))') 업데이트 (UPDATE your_table SET ..., rating2 = 20, overall = (13 + 20 + 54) 당신은 실제로 MySQL이이 문장을 왼쪽에서 오른쪽으로 평가할 때 그 표현식에서 열 이름을 사용할 수 있지만 좋은 방법은 아닙니다.) 이것을 행하는 다른 방법은 일괄 갱신 (update) 행이라는 차별화 된 업데이트가 가능할 때 가능한 WHERE 조건과 함께 periodicaly ('UPDATE your_table SET overall = rating + rating2 + rating3')라는 일괄 업데이트입니다. – WojtusJ

+0

데이터웨어 하우스와 같은 일부 VLDB에서 작업하지 않는 한 좋은 방법이 아닙니다. 이러한 종류의 작업에 대한보기가 이루어 지므로이를 사용해야합니다. 현재 상황에서는 중복성과 불일치가 발생할 수 있습니다. – WojtusJ