query con doble count

Iniciado por basickdagger, 28 Enero 2015, 23:01 PM

0 Miembros y 1 Visitante están viendo este tema.

basickdagger

hola tengo una tabla con dos campos distintos, por ejemplo:


RevisionMensaje
Pendienteenviado
Pendienteenviado
Inapropiado enviado
Inapropiado enviado
Pendienteenviado
Inapropiado enviado
Respondidoproceso

deseo contar los mensajes  inapropiados y contar los mensajes enviados, pero en una misma consulta.


Código (sql) [Seleccionar]

SELECT COUNT( revision ) AS inapropiadas
FROM mensajes
WHERE revision =  "Inapropiado";

SELECT COUNT( mensaje ) AS num_mensajes
FROM mensajes
WHERE mensaje =  "enviado";


saludos!

Usuario Invitado

#1
Código (sql) [Seleccionar]
SELECT COUNT(r.id_revision) AS 'Revisiones inapropiadas',
COUNT(m.id_mensaje) AS 'Mensajes enviados'
FROM Revision r, Mensaje m
WHERE r.revision = 'Inapropiado' AND m.mensaje = 'enviado';
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

HdM

Sólo hay una tabla...

Si he entendido bien, podría quedar así:

Código (sql) [Seleccionar]

SELECT revision AS estado,COUNT( revision ) AS total
  FROM mensajes
WHERE revision =  "Inapropiado"
GROUP BY revision

UNION

SELECT mensaje, COUNT( mensaje )
  FROM mensajes
WHERE mensaje =  "enviado"
GROUP BY mensaje


Saludos.

- Nice to see you again -

MinusFour

Tambien lo deberias poder hacer asi:

Código (sql) [Seleccionar]

SELECT COUNT(IF(mensaje = 'enviado', 1, NULL)) as enviados,
COUNT(IF(revision = 'Inapropiado', 1, NULL)) as inapropiados
FROM mensajes


Aunque puede ser un poco mas lento que las otras queries, dependiendo de la estructura de tu base de datos.

Usuario Invitado

Leí mal xD. Teniendo en cuenta tu tabla, lo haría con unas subconsultas sencillas:

Código (sql) [Seleccionar]
select
(select count(rev_state) from revisions where rev_state = 'inapropiado') as 'Mensajes inapropiados',
(select count(message_state) from revisions where message_state = 'enviado') as 'Mensajes enviados'


Salida:

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

basickdagger

Excelente me funcionó a la perfección Gus Garsaky, pero estoy seguro q necesito leer mas sobre subconsultas e UNION... :xD

gracias por sus respuestas...

Saludos!