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

ORDER BY en un UNION

Estas en el tema de ORDER BY en un UNION en el foro de ASP Clásico en Foros del Web. Hola, tengo un problema con un SELECT que va unido a otro de la siguiente manera: Código: strsql = "(select "_ &"productos.Id AS productoId,"_ &"productos.titulo ...
  #1 (permalink)  
Antiguo 06/06/2008, 02:46
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 20 años
Puntos: 0
ORDER BY en un UNION

Hola,

tengo un problema con un SELECT que va unido a otro de la siguiente manera:

Código:
strsql = "(select "_
	&"productos.Id AS productoId,"_
	&"productos.titulo AS productoTitulo,"_
	&"empresas.Id AS empresaId,"_
	&"empresas.empresa AS empresaNombre,"_
	&"empresas.posicionamiento AS empresaPosicionamiento "_
	&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id WHERE productos.tematica = 5)"_
	&" UNION "_
	&"(select "_
	&"productos.Id AS productoId,"_
	&"productos.titulo AS productoTitulo,"_
	&"empresas.Id AS empresaId,"_
	&"empresas.empresa AS empresaNombre,"_
	&"empresas.posicionamiento AS empresaPosicionamiento "_
	&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id) "_
	&"ORDER BY productos.Id"
El ORDER BY me da error diciendo que no encuentra la columna productos.Id mientras que esta en el SELECT de la primera tabla.

Lo que necesito hacer es una consulta de productos que salgan ordenados por titulo pero que al inicio del listado me muestre los que la tematica = 5 y luego los restantes.

He probado de ponerle ORDER BY 1 y me lo ordena todo pero entonces no me muestra en primera posición los de tematica=5.

Alguien me puede echar un cable???. GRacias
  #2 (permalink)  
Antiguo 06/06/2008, 03:01
 
Fecha de Ingreso: abril-2008
Mensajes: 51
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: ORDER BY en un UNION

Hola prueba a poner en vez de productos.ID el nombre que le as dado a ese campo en la select, que en ese caso es productoId.

Prueba y comenta si se soluccionó.


Un saludo
__________________
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Publicado por: portillo18
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  #3 (permalink)  
Antiguo 06/06/2008, 03:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 20 años
Puntos: 0
Respuesta: ORDER BY en un UNION

Si eso lo ordena todo. Pero el hecho de ordenarlo todo no es el problema ya que con ORDER BY 2 ya me lo ordenaba. Ahora bien, lo que pretendo no es ordenar los 2 select unidos sinó cada uno independientemente ya que los que cumplan con la condición (tematica = 5) deben de salir los primeros del listado. Supongamos que un registro que cumple la condición y tiene el título que empieza por la Z me lo ordena al final mientras que deberias de salir al principio como destacado.

ejemplo de la consulta que necesito obtener:
g (porque cumple la condición de destacado tematica = 5)
h (porque cumple la condición de destacado tematica = 5)
i (porque cumple la condición de destacado tematica = 5)
a
b
c
d
e
f

gracias
  #4 (permalink)  
Antiguo 06/06/2008, 13:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: ORDER BY en un UNION

Prueba haciendo un select sobre el select:

Código:
"SELECT * FROM (" & _
"(select "_
	&"productos.Id AS productoId,"_
	&"productos.titulo AS productoTitulo,"_
	&"empresas.Id AS empresaId,"_
	&"empresas.empresa AS empresaNombre,"_
	&"empresas.posicionamiento AS empresaPosicionamiento "_
	&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id WHERE productos.tematica = 5)"_
	&" UNION "_
	&"(select "_
	&"productos.Id AS productoId,"_
	&"productos.titulo AS productoTitulo,"_
	&"empresas.Id AS empresaId,"_
	&"empresas.empresa AS empresaNombre,"_
	&"empresas.posicionamiento AS empresaPosicionamiento "_
	&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id) "_
	&") AS v1 "_
        &" ORDER BY productos.Id" 
Es posible que se me esté escapando un paréntesis, pero la idea es hacer un select externo y aplicarle a ese select el orden.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 09/06/2008, 02:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 20 años
Puntos: 0
Respuesta: ORDER BY en un UNION

Al final quedó así:

strsql = "(SELECT "_
&"productos.Id AS productoId,"_
&"productos.titulo AS productoTitulo,"_
&"productos.tipo AS productoTipo,"_
&"productos.tematica AS productoTematica,"_
&"productos.idioma AS productoIdioma,"_
&"empresas.Id AS empresaId,"_
&"empresas.empresa AS empresaNombre,"_
&"empresas.posicionamiento AS empresaPosicionamiento "_
&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id WHERE (empresas.posicionamiento = 1) ORDER BY productoTitulo ASC"

strsql = strsql & ") UNION "_
&"(SELECT "_
&"productos.Id AS productoId,"_
&"productos.titulo AS productoTitulo,"_
&"productos.tipo AS productoTipo,"_
&"productos.tematica AS productoTematica,"_
&"productos.idioma AS productoIdioma,"_
&"empresas.Id AS empresaId,"_
&"empresas.empresa AS empresaNombre,"_
&"empresas.posicionamiento AS empresaPosicionamiento "_
&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id ORDER BY productoTitulo 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 15:17.