Foros del Web » Programando para Internet » ASP Clásico »

Todo en un solo rs

Estas en el tema de Todo en un solo rs en el foro de ASP Clásico en Foros del Web. Hola, estoy sacando el total de compras que realizo un usuario, las compras que realizo el ultimo mes, los últimos seis meses, y el último ...
  #1 (permalink)  
Antiguo 04/08/2005, 17:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Todo en un solo rs

Hola, estoy sacando el total de compras que realizo un usuario, las compras que realizo el ultimo mes, los últimos seis meses, y el último año. En estos momentos lo estoy logrando con un solo RS pero con varias consultas, es decir, estoy abriendo y cerrando el mismo RS. Mi pregunta es si existe alguna forma (como son datos que se extraen siempre de la misma tabla y lo único que varian son las condiciones respecto a la fecha) de que con una sola sentencia SQL sacar los mismos datos. Con sentencias SELECT anidadas, se podría lograr?.
Un saludo a todos.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 04/08/2005, 17:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Por ejemplo?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 04/08/2005, 17:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
en este momento estoy intentando hacer sentencia de este estilo, pero me da continuamente error...

SELECT COUNT(PED_ID) AS TOTALCOMPRAS, COUNT(SELECT PED_ID FROM PED_PEDIDOS WHERE USU_ID = 3456 AND AFI_ID = 1 AND PED_FECHA BETWEEN # 2005/07/04 # AND # 2005/08/04 #) AS COMPRASULTMES FROM PED_PEDIDOS
WHERE USU_ID = 3456 AND AFI_ID = 1

No se si estaré haciendo mal la subconsulta, seguramente que es eso, y me está dando este error:

Esta subconsulta puede devolver como máximo un registro.

Está mal armada la subconsulta no?, o no se puede utilizar una subconsulta con dentro de COUNT()?
__________________
Add, never Remove
  #4 (permalink)  
Antiguo 04/08/2005, 18:02
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
mmmhhh...pero que no es lo mismo que hagas lo siguiente:

SELECT COUNT(PED_ID) AS TOTALCOMPRAS FROM PED_PEDIDOS
WHERE USU_ID = 3456 AND AFI_ID = 1 AND criterio de fecha

Y mas aun, puedes meter esto en una funcion que dependiendo de uno o mas parametros haga esta sentencia dinamica, asi no tienes que hacer lo mismo N veces donde solo cambiara el criterio de fechas.


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 04/08/2005, 20:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Claro, pero al hacer una función estaría en la misma, estaría generando 4 consultas distintas, y a mi me gustaría, si es que se puede, hacer esas 4 consultas (para extraer las compras totales, las compras del último mes, las compras de los últimos seis meses y la compra del último año) en una sola, para tener todos los datos de una sola vez. Estas son las consultas que estoy usando ahora:

Ventas totales de un usuario a un determinado negocio:

SELECT COUNT(PED_ID) FROM PED_PEDIDOS WHERE USU_ID = 3452 AND AFI_ID = 45

Ventas del último mes:

SELECT COUNT(PED_ID) FROM PED_PEDIDOS WHERE USU_ID = 3452 AND AFI_ID = 45 AND PED_FECHA BETWEEN # criterio de fecha # AND # criterio de fecha #

Las dos consultas restantes son iguales a esta última, cambiando los criterios de fecha para extraer los datos que mencioné anteriormente.

Existirá alguna forma de hacer estas cuatro consultas en una sola?, si no, no me queda otra que hacer lo que me comentaste U_Goldman, es una excelente idea para simplificar esta parte.
Muchas gracias por responder maestro.
Saludos!.
__________________
Add, never Remove
  #6 (permalink)  
Antiguo 05/08/2005, 11:33
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
yo suelo usar mucho este tipo de expresiones:


SELECT COUNT(PED_ID) CANTIDAD_TOTAL,
COUNT(CASE WHEN criterio de fecha # AND # criterio de fecha THEN PED_ID ELSE O END ) CANT_ULTIMO_MES
FROM PED_PEDIDOS
WHERE USU_ID = 3452 AND AFI_ID = 45

Entonces, pones un criterio para que cuente o no cuente dentro de la sentencia count, y generas tantos campos como necesites.
Slds. Edum
  #7 (permalink)  
Antiguo 05/08/2005, 11:52
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Aunque solo funcionara con MS-SQL no es asi?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 08/08/2005, 07:11
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
Oracle también, no sé mySql
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 01:44.