2016-07-29 2 views
-1

실패 나는 다음과 같은 SQL이 있습니다SQL에 절은

SELECT `id`,`postcode`, 
(SELECT COUNT(*) FROM `kids` WHERE `kids`.`bookingID` = `booking`.`id`) AS `k`, 
(SELECT COUNT(*) FROM `youth` WHERE `youth`.`bookingID` = `booking`.`id`) AS `y` 
FROM `booking` 
WHERE `k` > 0 AND `y` > 0 

이 때문에 알 수없는 열 k 실패 그러나합니다. 데이터베이스의 실제 열은 아니지만, SELECT에 정의했습니다. 그래서 어디서 잘못 될까요?

답변

2

WHERE 절에있는 SELECT에 정의 된 별칭을 참조 할 수 없습니다. 이것은 MySQL뿐만 아니라 일반적인 SQL에도 해당됩니다.

MySQL은 확장 기능을 제공합니다. 이 경우, 당신은 이 목적을 위해 HAVING 절을 사용할 수 있습니다 :

SELECT `id`,`postcode`, 
     (SELECT COUNT(*) FROM `kids` WHERE `kids`.`bookingID` = `booking`.`id`) AS `k`, 
     (SELECT COUNT(*) FROM `youth` WHERE `youth`.`bookingID` = `booking`.`id`) AS `y` 
FROM `booking` 
HAVING `k` > 0 AND `y` > 0; 
+0

감사합니다. 나는 그것을 몰랐다. – Chud37

1

당신이 수를()를 사용하는 경우, 당신이 SQL에서 가진 사용해야합니다 생각합니다.