2011-11-19 4 views
3

이 쿼리는 작동하지 않습니다. 누군가 나를 기쁘게 도와 줄 수 있습니까?하나의 쿼리에서 여러 번 계산

$query = "SELECT 
    COUNT(WHERE Name='george') AS george_total, 
    COUNT(WHERE Name='michael') AS michael_total, 
    COUNT(WHERE Name='mike') AS mike_total 
FROM users WHERE Banned IS NOT '1' AND Active='yes' AND Logins>1 AND Registered_to_forum='1'"; 

$row=mysql_fetch_array($result); 
echo " 
    We found $row['george_total'] people with the name 'George' in our database, 
    $row['michael_total'] with the name Michael 
    and $row['mike_total'] with the name Mike. 
"; 

답변

8

당신은 CASE 문 및 COUNT 또는 SUM를 사용할 수 있습니다.

COUNT 버전은 다음과 같습니다. 어떤 비 널 열 또는 상수 대신 1

SELECT 
    COUNT(CASE WHEN Name='george' THEN 1 END) AS george_total, 
    COUNT(CASE WHEN Name='michael' THEN 1 END) AS michael_total, 
    COUNT(CASE WHEN Name='mike' THEN 1 END) AS mike_total /*.... rest of query*/ 

SUM 버전으로 사용할 수 있도록 COUNT

SELECT 
    SUM(CASE WHEN Name='george' THEN 1 ELSE 0 END) AS george_total, 
    SUM(CASE WHEN Name='michael' THEN 1 ELSE 0 END) AS michael_total, 
    SUM(CASE WHEN Name='mike' THEN 1 ELSE 0 END) AS mike_total /*.... rest 
                    of query*/ 
+0

감사하다 NOT NULL 값을 계산하지만, 예를 들어 조지의 양을 반환하지 않습니다 , 그것은 단지 1 또는 0을 반환합니다. 10 개의 조지 또는 그와 같은 것이 아닙니다. – Jordy

+0

@Jordy - 당신은 단지 하나의 조지를 가져야 만합니다. 두 쿼리 모두 정상적으로 작동합니다. 어쩌면 당신은'where' 절 때문에 그들을 제외시킬 것입니까? –

+0

그것은 작동합니다 ;-) 대단히 감사합니다! – Jordy

관련 문제