2011-03-10 8 views
0

데이터베이스의 특정 제품의 총 볼륨을 알아 내려고 시도 중입니다. 볼륨이 3000 이상인 모든 제품을 나열하려고합니다 ....WHERE 절에서 계산 된 열을 어떻게 사용합니까?

그래서 나는 :

SELECT (
products_width * products_height * products_length 
) AS total_volume 
FROM `price` 
where total_volume > 3000 

하지만 오류 열이 "total_volume"당신은 내가이 문제를 해결하는 방법을 알려 수, where 절에 존재하지 않는다는을 얻을?

답변

1

시도 :이 쿼리의 선택 부분에서 만들어지기 때문에

SELECT (
products_width * products_height * products_length 
) AS total_volume 
FROM `price` 
having total_volume > 3000 

또는 설명은

select * 
from (
    SELECT (
     products_width * products_height * products_length 
    ) AS total_volume 
    FROM `price` 
) 
where total_volume > 3000 

, 당신은 직접 where 절에 total_volume을 사용할 수 없습니다. 이 경우 having을 사용할 수도 있고 하위 쿼리를 사용할 수도 있습니다.

+0

내가 갖는 솔루션, 같은 매우 깨끗한 마음, 감사합니다! – seb

0
SELECT (
products_width * products_height * products_length 
) AS total_volume 
FROM `price` 
HAVING total_volume >= 3000 

- 변경 대상 위치 : 그게 전부입니다.

+0

이렇게하면 원하는 결과를 얻을 수 없습니다. – krtek

+0

네, 당연히 당신의 말이 맞습니다 ... "그룹화"가 아니라 "HAVING"... 내 머리는 어디에 있습니까! –

+0

지금 업데이트되었지만 답변은 크 르텍과 동일합니다. –

0

당신은에있는 공식을 반복 할 필요가 당신의 장소 :

SELECT (products_width * products_height * products_length) AS total_volume 
    FROM `price` 
    where (products_width * products_height * products_length) > 3000 
+0

수식이 변경 될 수있는 경우 유지 관리 문제가 발생할 수 있습니다. 'having'또는 하위 쿼리를 사용하면이 문제를 해결할 수 있습니다. – krtek

관련 문제