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

Como unificar estas consultas

Estas en el tema de Como unificar estas consultas en el foro de Bases de Datos General en Foros del Web. En un proceso que estoy desarrollando poseo las siguientes consultas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código sql: Ver original SELECT COUNT ( monto ) , SUM ( monto ...
  #1 (permalink)  
Antiguo 26/05/2009, 12:48
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 20 años, 6 meses
Puntos: 4
Como unificar estas consultas

En un proceso que estoy desarrollando poseo las siguientes consultas

Código sql:
Ver original
  1. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31';
  2. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto2' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31';
  3. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto3' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31';
  4. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto4' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31';

hasta llegar a subproducto3... ejecutar estas consultas por separado consume muchos recursos, es posible hacer todo esto en una sola consulta, ya que el unico valor que cambia es el tipo de subproducto?
  #2 (permalink)  
Antiguo 26/05/2009, 12:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Como unificar estas consultas

Necesitas la suma total de todas las consultas?

prueba esto y dinos si te sirve.

Código mysql:
Ver original
  1. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO in('subproducto','subproducto2','subproducto3','subproducto4') AND reporte BETWEEN  '2008-01-01' AND '2009-01-31';

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 26/05/2009, 15:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Como unificar estas consultas

requiero los parciales de cada tipo... es decir la suma y el conteo de tipo1, la suma y el conteo de tipo2, la suma y el conteo de tipo3 etc etc...

Gracias por la ayuda que me puedas prestar
  #4 (permalink)  
Antiguo 26/05/2009, 15:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Como unificar estas consultas

No se si administra mejor los recursos, pero puedes hacer pruebas

Código mysql:
Ver original
  1. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31'
  2. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto2' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31'
  3. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto3' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31'
  4. SELECT COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND TIPO = 'subproducto4' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31'

Nos cuentas como te va.

Esto te genera una unica salida con toda la información solicitada.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 26/05/2009, 15:49
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Como unificar estas consultas

gracias por la ayuda... tu respuesta me dio una luz con la que llegue al GROUP BY

quedaria algo asi
Código sql:
Ver original
  1. SELECT tipo,COUNT(monto),SUM(monto) FROM partidas WHERE codigo = 'IV00228114' AND reporte BETWEEN  '2008-01-01' AND '2009-01-31' GROUP BY tipo
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 14:29.