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

2 sentencias sql en 1

Estas en el tema de 2 sentencias sql en 1 en el foro de ASP Clásico en Foros del Web. Hola a tod@s Estoy intentando combinar estas dos sentencias sql en 1 sola y no lo consigo si alguien puede ayudarme SQL1= "SELECT * from ...
  #1 (permalink)  
Antiguo 06/07/2003, 13:52
 
Fecha de Ingreso: septiembre-2002
Mensajes: 38
Antigüedad: 21 años, 9 meses
Puntos: 0
2 sentencias sql en 1

Hola a tod@s

Estoy intentando combinar estas dos sentencias sql en 1 sola y no lo consigo si alguien puede ayudarme


SQL1= "SELECT * from PRODUCTOS WHERE ONLINE=TRUE AND Ref='" + Request.form("Referencia") + "'"
Recordset1.Open SQL1,conexion,2,3

vFamilia= Recordset1.Fields.Item("Familia").Value

SQL2= "SELECT * from PRODUCTOS WHERE ONLINE=TRUE AND familia='" + vFamilia + "order by ORDEN" + "'"

-------------- Sentencia que yo creo que seria la resultante-----------

SQL3= SELECT * FROM Productos WHERE Familia =
(SELECT * FROM PRODUCTOS WHERE Ref='" + Request.form("Referencia") + "'"

----------------------------------------------------------------------------------

El objetivo de la sentencia es que me pasan una referencia y se debe mostrar en primer lugar el producto con esta referencia y seguidamente todas las referencias de la misma familia

Actualmente utilizo 2 consultas a la bd y utilizo 2 recordsets (uno para buscar la referencia y en el otro recojo todos los productos de esa familia) me gustaria reducirlo a una consulta para poder utilizar solo un recordset

No se si me he explicado con claridad, si teneis alguna duda intentare explicarlo mejor

Muchas gracias
  #2 (permalink)  
Antiguo 07/07/2003, 02:12
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Prueba esto

SELECT B.* FROM PRODUCTOS AS A INNER JOIN PRODUCTOS AS B ON A.FAMILIA = B.FAMILIA WHERE A.REF= '" + Request.form("Referencia") + "'"

Esto te devuelve todos los registros de productos cuya familia sea la misma que la de Request.form("Referencia")

Creo que es lo que quieres. Si no dimelo.

Un saludo.
  #3 (permalink)  
Antiguo 07/07/2003, 09:53
 
Fecha de Ingreso: septiembre-2002
Mensajes: 38
Antigüedad: 21 años, 9 meses
Puntos: 0
Gracias Àlex

Esto que me has enviado me ha funcionado pero no es exactamente lo que necesito, voy a ponerte un ejemplo a ver si puedes ayudarme de nuevo

tabla productos
-----------------------
ref familia on-line

1 bota true
2 bota false
3 lampara true
4 bota true
5 bota true
6 bota true

a mi me pasan la referencia 5 para consultar entonces en pantalla debe salir

primer lugar la ref ----------------> 5
y seguidamente todas
las ref que
sean bota y esten online----------->1
4
6

Pero en primer lugar siempre la referencia que me han pasado para consultar

con la sentencia sql que me has pasado no me sale en primer lugar la referencia que me interesa salen todos los productos con el orden que estan en la tabla

Muchas gracias
  #4 (permalink)  
Antiguo 07/07/2003, 11:57
Avatar de buliwyf  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 221
Antigüedad: 22 años, 5 meses
Puntos: 1
prueba esto:

select p1.* from productos p1 right join productos p2 on p1.familia=p2.familia where p1.online=true and ref="&Request.form("Referencia")
__________________
RTFM antes de preguntar...
  #5 (permalink)  
Antiguo 08/07/2003, 02:46
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
intenta ordenarlo asi

ORDER BY (B.REF= '" + Request.form("Referencia") + "'")

Es un poco extraño pero te funcionará. En el ejemplo el primero te colocará el 5 (porque es TRUE) y luego el resto (porque son FALSE).
  #6 (permalink)  
Antiguo 08/07/2003, 10:32
 
Fecha de Ingreso: septiembre-2002
Mensajes: 38
Antigüedad: 21 años, 9 meses
Puntos: 0
Hola a tod@s

Al final la sentencia sql me ha quedado tal como:


SQL= "SELECT B.* FROM PRODUCTOS AS A INNER JOIN PRODUCTOS AS B ON A.EQUIPO = B.FAMILIA AND A.ONLINE=B.ONLINE WHERE A.ONLINE=TRUE AND A.REF= '" + Request.Form.("Referencia") + " ' " + "ORDER BY (B.REF='" + Request.Form.("Referencia") + " '),b.ORDEN ASC "


Da como resultado exactamente lo que pretendia y me ha reducido el codigo fuente a la mitad.

Muchas gracias a tod@s

a10
  #7 (permalink)  
Antiguo 08/07/2003, 10:43
 
Fecha de Ingreso: septiembre-2002
Mensajes: 38
Antigüedad: 21 años, 9 meses
Puntos: 0
perdon EQUIPO = FAMILIA (NO SE DONDE TENGO LA CABEZA )

SQL= "SELECT B.* FROM PRODUCTOS AS A INNER JOIN PRODUCTOS AS B ON A.FAMILIA = B.FAMILIA AND A.ONLINE=B.ONLINE WHERE A.ONLINE=TRUE AND A.REF= '" + Request.Form("Referencia") + " ' " + "ORDER BY (B.REF='" + Request.Form("Referencia") + " '),b.ORDEN ASC "
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 16:20.