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

cambiar varios SELECT por uno

Estas en el tema de cambiar varios SELECT por uno en el foro de ASP Clásico en Foros del Web. Hola, estoy realizando me parece demasiadas consultas y conexiones, cuando creo que se podria simplificar a una sola. Aqui mi ejemplo: Código: <% Set Conn ...
  #1 (permalink)  
Antiguo 09/06/2008, 06:49
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
cambiar varios SELECT por uno

Hola,
estoy realizando me parece demasiadas consultas y conexiones, cuando creo que se podria simplificar a una sola. Aqui mi ejemplo:

Código:
<%
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.open "tablero", "sa", ""
  set rs = CreateObject("ADODB.Recordset")
  set rs2 = CreateObject("ADODB.Recordset")
  set rs3 = CreateObject("ADODB.Recordset")
  set rs4 = CreateObject("ADODB.Recordset")
%>
<% 
	Dim SQL
	SQL = "SELECT sum(cub) as parolaccia FROM costos_maxirest WHERE local <= 4  AND month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &" or local >= 7 AND month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &""
	set rs = conn.execute(SQL)
%>
<% 
	Dim SQL2
	SQL2 = "SELECT sum(cub) as bistecca FROM costos_maxirest WHERE local = 5 AND month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &" or local = 6 AND month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &""
	set rs2 = conn.execute(SQL2)
%>
<% 
	Dim SQL3
	SQL3 = "SELECT sum(cub) as total FROM costos_maxirest WHERE month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &""
	set rs3 = conn.execute(SQL3)
%>
<%
	Dim SQL4
	SQL4 = "SELECT MAX(fecha) as fecha2 FROM costos_maxirest WHERE month(fecha) = " & month(date()) &" AND year(fecha) = " & year(date()) &""
	set rs4 = conn.execute(SQL4)
%>
Alguien sabe como mejorar esto?

Muchas gracias a todos!
__________________
Bye!
  #2 (permalink)  
Antiguo 09/06/2008, 07:02
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 17 años
Puntos: 2
Respuesta: cambiar varios SELECT por uno

mmm sin entender que hace tiro esto...

Y ojo que tenes algunas condiciones redundantes

Código:
select (SELECT sum(cub) as parolaccia
       FROM costos_maxirest
       WHERE local <= 4
       AND month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"
       or local >= 7),
       
       (SELECT sum(cub) as bistecca
       FROM costos_maxirest
       WHERE local = 5
       AND month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"
       or local = 6) ,

       (SELECT sum(cub) as total
       FROM costos_maxirest
       WHERE month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"") ,

       (SELECT MAX(fecha) as fecha2
       FROM costos_maxirest
       WHERE month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"")
pruébalo así, espero que sirva.
saludos
__________________
Saludoss
Guille
  #3 (permalink)  
Antiguo 09/06/2008, 07:04
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

Gracias guille lo pruebo.
Saludos
__________________
Bye!
  #4 (permalink)  
Antiguo 09/06/2008, 08:02
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

Guille,
con el codigo completo de esta forma:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.open "tablero", "sa", ""
  set rs = CreateObject("ADODB.Recordset")
		
		Dim SQL
	   SQL = "select (SELECT sum(cub) as parolaccia
       FROM costos_maxirest
       WHERE local <= 4
       AND month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"
       or local >= 7),
       
       (SELECT sum(cub) as bistecca
       FROM costos_maxirest
       WHERE local = 5
       AND month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"
       or local = 6) ,

      (SELECT sum(cub) as total
       FROM costos_maxirest
       WHERE month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &"),

      (SELECT MAX(fecha) as fecha2
       FROM costos_maxirest
       WHERE month(fecha) = " & month(date()) &"
       AND year(fecha) = " & year(date()) &")"
	   
	   set rs = Conn.execute(SQL)
%>
me dice lo siguiente:

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A03FD)
Se esperaba 'Case'
/cubiertos/mespormarca.asp, línea 3, columna 7
select (SELECT sum(cub) as parolaccia

Por ahi soy yo que cometi algun error, lo unico que cambie de lo que me pasaste fueron algunas comillas.

Saludos y gracias nuevamente.
__________________
Bye!
  #5 (permalink)  
Antiguo 09/06/2008, 08:06
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 17 años
Puntos: 2
Respuesta: cambiar varios SELECT por uno

Fijate si podes tirar el query directamente en la base de datos. Si ahí anda el problema es de tu código ASP (del que no puedo opinar porque no se...).
__________________
Saludoss
Guille
  #6 (permalink)  
Antiguo 09/06/2008, 13:38
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: cambiar varios SELECT por uno

lo que les falta es concatenar las lineas para que proceda el codigo

Cita:
SQL = "select (SELECT sum(cub) as parolaccia"&_
"FROM costos_maxirest"&_
"WHERE local <= 4"&_
"AND month(fecha) = " & month(date()) &_
"AND year(fecha) = " & year(date()) &_
"or local >= 7),"&_
"(SELECT sum(cub) as bistecca"&_
"FROM costos_maxirest"&_
"WHERE local = 5"&_
"AND month(fecha) = " & month(date()) &_
"AND year(fecha) = " & year(date()) &_
"or local = 6) ,"&_
"(SELECT sum(cub) as total"&_
"FROM costos_maxirest"&_
"WHERE month(fecha) = " & month(date()) &""&_
"AND year(fecha) = " & year(date()) &"),"&_
"(SELECT MAX(fecha) as fecha2"&_
"FROM costos_maxirest"&_
"WHERE month(fecha) = " & month(date()) &_
"AND year(fecha) = " & year(date()) &")"
tambien, recuerden que para concatenar lineas con este metodo "&_", no debe existir lineas en blanco, marca error

vuelve a intentar y comenta
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 09/06/2008, 15:07
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

Exacto Shiryu_Libra con eso funciono, pero creo que hay un error en la forma de escribir el SELECT...por que poniendo solo esta linea:

Código:
<%    
Dim SQL
SQL = "SELECT (select sum(cub) as parolaccia FROM costos_maxirest)"
set rs = conn.execute(SQL)
%>
me dice:

Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.

Como que no encuentra el campo cub, pero poniendo solo esto funciona:

Código:
<%
Dim SQL
SQL = "SELECT sum(cub) as parolaccia FROM costos_maxirest"
set rs = conn.execute(SQL)
%>

Entonces pienso que lo que falla es la busqueda de varios SELECT al mismo tiempo.

Espero que se entienda es un poco complicado de explicar.
Gracias a todos por la colaboracion.
__________________
Bye!
  #8 (permalink)  
Antiguo 10/06/2008, 12:09
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

alguien sabe como hacer?

Gracias :$
__________________
Bye!
  #9 (permalink)  
Antiguo 10/06/2008, 12:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: cambiar varios SELECT por uno

Fijate que tu campo se llama parolaccia, pues utilizaste un alias, por ende, debes llamarlo por ese alias

rs("parolaccia") en lugar de rs("cub")

Saludos

P.D. Por favor no reflotes los temas para que te contesten -no es necesario-, sin duda alguien llegara a hacerlo.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 10/06/2008, 12:17
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

ok perdon.

yo lo llamo con ese nombre parolaccia, es mas como digo en mi post anterior, usando el select simple funciona...pero no cuando intento hacer otro select.

COmo hago un select dentro de otro?

select (select sum(cub) as parolaccia FROM costos_maxirest) , (select ....
no me funciona de esta manera

gracias
__________________
Bye!
  #11 (permalink)  
Antiguo 10/06/2008, 12:50
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: cambiar varios SELECT por uno

Ya...es que el alias en realidad lo debes poner al final de cada sentencia de agregado, fijate en esta salida:

Código:
SELECT
SELECT sum(cub) FROM costos_maxirest [WHERE condiciones] as parolaccia,
SELECT sum(cub) FROM costos_maxirest [WHERE condiciones] as bistecca,
SELECT sum(cub) FROM costos_maxirest [WHERE condiciones] as total,
SELECT MAX(fecha) FROM costos_maxirest [WHERE condiciones] as fecha2
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 10/06/2008, 12:52
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: cambiar varios SELECT por uno

Muchas gracias u_goldman !!! me salvaste :D
__________________
Bye!
  #13 (permalink)  
Antiguo 10/06/2008, 12:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: cambiar varios SELECT por uno

Por nadas
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 11:26.