2011-01-09 5 views
0

나는 그러나 매우 비슷한 두 MySQL의 쿼리는 특정 WHERE 절 (type)시 COUNT() 돌아왔다, 그래서 그들은 1 개 쿼리로 단지 WHERE 절 (type) 두 가지를 differenciates보고로 통합 될 수 있는지 궁금 해서요?2 개의 MySQL 쿼리를 1로 병합하여 단순화 하시겠습니까?

쿼리 1 :

SELECT COUNT(referral_id) AS in_count 
FROM referrals 
WHERE author = '{$author}' 
     AND type = 'in' 
     AND ip_address = '{$ip_address}' 
LIMIT 1 

질의 2 :

SELECT COUNT(referral_id) AS out_count 
FROM referrals 
WHERE author = '{$author}' 
     AND type = 'out' 
     AND ip_address = '{$ip_address}' 
LIMIT 1 

모든 도움을 크게 감사합니다 : B는

답변

1
SELECT SUM(IF(type='in',1,0)) as in_count, 
     SUM(IF(type='out',1,0)) as out_count 
FROM referrals 
WHERE author = '{$author}' AND 
     ip_address = '{$ip_address}' 
LIMIT 1 
+0

+1이 그냥 타이핑하고 있었지만 나를 괴롭혔습니다. OP에게, [이 MySQL tidbit] (http://dev.mysql.com/tech-resources/articles/wizard/page3.html)이 일종의 도움이 될 수 있습니다. –

+0

감사합니다! Burak !, 또한 재미있는 Brad for the tidbit! – newbtophp

0

넌 그냥 GROUP BY 절을해야합니다.

SELECT COUNT(referral_id) AS count, type 
FROM referrals 
WHERE author = '{$author}' 
    AND ip_address = '{$ip_address}' 
GROUP BY type 
LIMIT 1 
관련 문제