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

Varios counts en una consulta con diferentes condiciones para cada count

Estas en el tema de Varios counts en una consulta con diferentes condiciones para cada count en el foro de Mysql en Foros del Web. Hola! Estoy tratando de hacer una cosulta con varios count pera cada count necesita de diferentes condiciones hasta el momento solo he podido realizar la ...
  #1 (permalink)  
Antiguo 20/11/2008, 07:47
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Varios counts en una consulta con diferentes condiciones para cada count

Hola!
Estoy tratando de hacer una cosulta con varios count pera cada count necesita de diferentes condiciones hasta el momento solo he podido realizar la consulta por separado esto me sirve lo utilizo como subreportes, pero para la grafica necesito que todo este junto en una consulta para.
mi tabla es esta
tb_venda
-------------------------------
id_venda|idvendedor|datavenda|adicionaisofertados

la primera consulta es esta

select idvendedor as clave, count(datavenda) as atendimientos
from tb_venda
where date(tb_venda.datavenda) between '2007-01-01' and '2009-10-31'
group by idvendedor

y obtengo el siguiente resultado

idvendedor|
13
14

atendimientos
33
10

y la siguiente cosulta es

select idvendedor as clave, count(datavenda) as adicionaisofertados
from tb_venda
where date(tb_venda.datavenda) between '2007-01-01' and '2009-10-31'
and tb_venda.adicionaisofertados='1'
group by idvendedor

y obtengo el siguiente resultado
idvendedor|
13
14

adicionaisofertados
14
3

todo muy bien asta aqui pero yo necesito los dos resultados de atendimentos y adicionaisofertados en una sola consulta
asi es como las estoy juntado

select idvendedor as clave, count(datavenda) as atendimientos,count(datavenda) as adicionaisofertados
from tb_venda
where date(tb_venda.datavenda) between '2007-01-01' and '2009-10-31'
and tb_venda.adicionaisofertados='1'
group by idvendedor

pero como toma la condicion de adicionaisofertados me muestra los siguiente

idvendedor|
13
14

atendimientos|
14
3

adicionaisofertados
14
3

me repirte los valores debido a la condicion y eso no quiero si no que se muestre los valores de las consultas separadas pero en una para poder hacer le grafico..
Necesito esto
idvendedor|
13
14

atendimientos|
33
10

adicionaisofertados
14
3





Pensaba utilizar Stored Procedure hacer cada consulta por separado en stored procedure y despues un tercero que llamara a cada uno pero no se como hacerlo??
hacerlo si pero llamar a otros no.
O como hacerlo en una consulta sola
Si alguien tiene una idea y me pueda ayudar ...
Gracias..
Saludos
  #2 (permalink)  
Antiguo 20/11/2008, 18:48
rqd
 
Fecha de Ingreso: julio-2008
Mensajes: 228
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

por que no pruebas crear dos vistas, una para cada una de las consultas y luego lo que quieres lo resuelves con un select y un join de las dos vistas.
  #3 (permalink)  
Antiguo 20/11/2008, 23:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

Prueba esta consulta:
Código sql:
Ver original
  1. SELECT idvendedor, COUNT( datavenda ) AS atendimientos, t1.adicionaisofertados2
  2. FROM tb_venda
  3. INNER JOIN (
  4.  
  5. SELECT idvendedor AS clave2, COUNT( datavenda ) AS adicionaisofertados2
  6. FROM tb_venda
  7. WHERE DATE( tb_venda.datavenda )
  8. BETWEEN '2007-01-01'
  9. AND '2009-10-31'
  10. AND tb_venda.adicionaisofertados = '1'
  11. GROUP BY idvendedor
  12. )t1 ON tb_venda.idvendedor = t1.clave2
  13. WHERE DATE( tb_venda.datavenda )
  14. BETWEEN '2007-01-01'
  15. AND '2009-10-31'
  16. GROUP BY idvendedor
  #4 (permalink)  
Antiguo 21/11/2008, 05:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

Jurena muchas gracias funciono :)
  #5 (permalink)  
Antiguo 21/11/2008, 06:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

solo una pregunta mas :) que pasaria si el vendedor con idvendedor 13 por ejemplo tiene antendimientos mas no tiene adicionaisofertados
he probado eso y suprime el valor del idvendedor que tiene atendimientos pero no tiene ofertados existe una forma que aparesca la cantidad en atendimientos y aparesca 0 o null en adicionais ofertados

Saludos :)
gracias
  #6 (permalink)  
Antiguo 21/11/2008, 10:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

para hacer eso, tendrías que utilizar un cruce LEFT JOIN y luego mostrar cero cuando el resultado sea NULL.
Código sql:
Ver original
  1. SELECT idvendedor, COUNT( datavenda ) AS atendimientos, ifnull( t1.adicionaisofertados2, '0' ) adicionaisof
  2. FROM tb_venda
  3. LEFT JOIN (
  4.  
  5. SELECT idvendedor AS clave2, COUNT( datavenda ) AS adicionaisofertados2
  6. FROM tb_venda
  7. WHERE DATE( tb_venda.datavenda )
  8. BETWEEN '2007-01-01'
  9. AND '2009-10-31'
  10. AND tb_venda.adicionaisofertados = '1'
  11. GROUP BY idvendedor
  12. )t1 ON tb_venda.idvendedor = t1.clave2
  13. WHERE DATE( tb_venda.datavenda )
  14. BETWEEN '2007-01-01'
  15. AND '2009-10-31'
  16. GROUP BY idvendedor

Prueba esto.
  #7 (permalink)  
Antiguo 21/11/2008, 11:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Varios counts en una consulta con diferentes condiciones para cada count

Muchisimas Gracias funciono :)
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 00:04.