2014-04-27 7 views
1

다른 열을 기반으로 mnt_res 열을 계산할 수 있습니까?MySQL : 다른 별칭을 사용하여 새 별칭을 생성하기

CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER 
VIEW v_test AS 
SELECT 
    func_calculate_total(...) AS mnt_total 
    func_calculate_one(...) AS mnt_one, 
    func_calculate_two(...) AS mnt_two, 
    (mnt_total - mnt_one - mnt_two) AS mnt_res  /* Problem */ 
FROM ... 

함수를 다시 호출하지 않고이를 수행 할 수있는 방법이 있습니까? 아니면 예를 들어 php로 계산합니까?

답변

1

아아, 이것은 MySQL에서 실제로 가능하지 않습니다. 이를 정의 할 수 있지만 두 함수를 다시 호출해야합니다.

MySQL에서는 from 절에 하위 쿼리를 사용할 수 없습니다. 그렇다면 하위 쿼리를 사용하면 쉽습니다. 이 제한이있는 유일한 데이터베이스입니다.

일반적으로 SQL은 정의 된 동일한 select에서 열 별칭을 참조 할 수 없도록합니다. 그래서 그것은 또한 가능하지 않습니다. 이 두 개의 뷰를 사용하고 끝낼 수

한 가지 방법 : 응답 및 제안에 대한

CREATE VIEW _v_test AS 
    SELECT 
     func_calculate_total(...) AS mnt_total 
     func_calculate_one(...) AS mnt_one, 
     func_calculate_two(...) AS mnt_two 
    FROM ... 

CREATE VIEW v_test as 
    SELECT vt.*, (mnt_total - mnt_one - mnt_two) AS mnt_res 
    FROM _v_test vt; 
+0

감사합니다. – alditis

관련 문제