Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

usando dos COUNT

Estas en el tema de usando dos COUNT en el foro de Mysql en Foros del Web. Hola a todos, hace tiempo le doy vueltas a una consulta sql y no logro hacerla andar mi estructura es la siguiente: emails .id .nombre ...
  #1 (permalink)  
Antiguo 21/04/2010, 10:23
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
usando dos COUNT

Hola a todos,
hace tiempo le doy vueltas a una consulta sql y no logro hacerla andar

mi estructura es la siguiente:

emails
.id
.nombre


envios
.id
.id_email
.estado (1/0)


mi sql es el siguiente:

Código HTML:
SELECT emails.id, emails.nombre, COUNT(e1.id) cantidad, COUNT(e2.id) enviados
FROM emails
INNER JOIN envios e1 ON e1.id_email = emails.id
INNER JOIN envios e2 ON e2.id_email = emails.id AND e2.estado = 1
GROUP BU emails.id
mi idea es mostrarme todos los "emails" y mostrarme las cantidades de envios
totales y las que tienen estado 1

no me esta funcionando porque solo me muestra los emails si enviados contiene algun registro

alguna idea?
gracias!
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 21/04/2010, 10:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: usando dos COUNT

Código MySQL:
Ver original
  1. SELECT emails.id, emails.nombre, COUNT(e1.id) cantidad, COUNT(e2.id) enviados
  2. FROM emails
  3. LEFT JOIN envios e1 ON e1.id_email = emails.id
  4. LEFT JOIN envios e2 ON e2.id_email = emails.id AND e2.estado = 1
  5. GROUP BU emails.id
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/04/2010, 06:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: usando dos COUNT

Otra

Código MySQL:
Ver original
  1. SELECT em.id, em.nombre, COUNT(e.id) cantidad, SUM(if(e.estado = 1,1,0)) enviados
  2. FROM emails em
  3. LEFT JOIN envios e ON e.id_email = em.id
  4. GROUP BY em.id, em.nombre

Quim

Etiquetas: count, dos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:52.