¿Simplificar dos consultas MySQL fusionándolas en 1?

Tengo dos consultas de MySQL que son muy similares, sin embargo, devuelven un COUNT() sobre un específico WHERE cláusulatype), por lo que me preguntaba si podrían fusionarse en 1 consulta, ya que solo el WHERE cláusulatype) diferencia los dos?

Consulta 1:

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

Consulta 2:

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

Se agradece enormemente toda la ayuda: B

preguntado el 09 de enero de 11 a las 05:01

2 Respuestas

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 

Respondido el 09 de enero de 11 a las 08:01

+1, solo estaba escribiendo esto, pero se me adelantó. Al OP, este tidbit de MySQL puede ser de alguna ayuda para este tipo de cosas. - Brad Christie

Solo necesitas un GROUP BY cláusula.

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

Respondido el 09 de enero de 11 a las 08:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.