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

ORDER BY en una UNION

Estas en el tema de ORDER BY en una UNION en el foro de Oracle en Foros del Web. Quiero hacer un order by dentro de las subselect de una UNION, pero da error que falta un paréntesis derecho. Las subselects funcionan perfectamente por ...
  #1 (permalink)  
Antiguo 11/02/2011, 05:42
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
ORDER BY en una UNION

Quiero hacer un order by dentro de las subselect de una UNION, pero da error que falta un paréntesis derecho. Las subselects funcionan perfectamente por separado, pero al hacer el UNION no funciona

Lo que queremos es, dentro de la misma tabla, ordenar los registros con ID menores que 100 por dos criterios y los mayores que 100 por otras dos columnas distintas

Código SQL:
Ver original
  1. (SELECT *
  2. FROM TABLA T1
  3. WHERE T1.ID < 100
  4. ORDER BY T1.CAMPO1, T1.CAMPO2)
  5. UNION
  6. (SELECT *
  7. FROM TABLA T2
  8. WHERE T2.ID > 100
  9. ORDER BY T2.CAMPO3, T2.CAMPO4)

Muchas gracias por anticipado
  #2 (permalink)  
Antiguo 11/02/2011, 11:37
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: ORDER BY en una UNION

Intenta con esto:

Código:
SELECT * FROM 
(SELECT * 
FROM TABLA T1 
WHERE T1.ID < 100
ORDER BY T1.CAMPO1, T1.CAMPO2)
UNION
SELECT * FROM 
(SELECT * 
FROM TABLA T2 
WHERE T2.ID > 100
ORDER BY T2.CAMPO3, T2.CAMPO4)
Saludos
Leo
  #3 (permalink)  
Antiguo 14/02/2011, 01:54
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: ORDER BY en una UNION

Gracias leonardo, pero no funciona. Lo que hice fue crearme una columna virtual y ordenar por esa columna, pero claro, al no existir la columna en mis clases el Hibernate no me deja hacerlo (pero eso es otro problema)
  #4 (permalink)  
Antiguo 14/02/2011, 08:53
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: ORDER BY en una UNION

Cita:
Iniciado por Heimish2000 Ver Mensaje
Gracias leonardo, pero no funciona. Lo que hice fue crearme una columna virtual y ordenar por esa columna, pero claro, al no existir la columna en mis clases el Hibernate no me deja hacerlo (pero eso es otro problema)
Hola Heimish2000, dices que la consulta no funciona, pero no comentas cuál es el problema. ¿La consulta marca algún error? si es así ¿qué error está marcando?. ¿La consulta no te está regresando los registros esperados? si es así ¿Qué está regresando y qué debería regresar? Entre más detalles puedas darnos del problema más fácil será tratar de ayudarte.

También podrías poner algunos datos de ejemplo de tus tablas y qué esperas de salida. tal vez podamos encontrar alguna forma alternativa para lograrlo.

Saludos
Leo.
  #5 (permalink)  
Antiguo 14/02/2011, 09:56
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: ORDER BY en una UNION

Lo primero, gracias por tu ayuda y por contestar.

El error al hacerlo así es el mismo que cuando lo hice de la primera manera que puse, el UNION me dice que falta un paréntesis derecho.

La forma alternativa la logré utilizando una nueva columna en la select (no en la tabla) que calculo dependiendo si es mayor o menor que 100 y ordeno por ese criterio, aunque mi solución es incompatible con Hibernate.
  #6 (permalink)  
Antiguo 14/02/2011, 12:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: ORDER BY en una UNION

Es cierto Heimish2000

el ORDER BY en consultas con UNION es bastante molesto.
Pero como dice Leonardo... si no das detalles de las salidas que quieres y pones un ejemplo concreto de lo que buscas, no podemos ayudarte mucho.

La incompatibilidad con Hibernate... mmmm ese es el factor negativo de este tipo de plataformas. Hasta cierto punto es bueno que una herramienta haga todo el trabajo por uno.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: order, union
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 02:18.