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

Ordenar El resultado de un UNION

Estas en el tema de Ordenar El resultado de un UNION en el foro de Bases de Datos General en Foros del Web. hola a todos, A ver si alguien puede ayudarme con la siguiente consulta tengo dos tablas : Reservas y ReservasEspeciales quiero obtener el resultado de ...
  #1 (permalink)  
Antiguo 01/04/2008, 02:18
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Ordenar El resultado de un UNION

hola a todos,

A ver si alguien puede ayudarme con la siguiente consulta
tengo dos tablas : Reservas y ReservasEspeciales

quiero obtener el resultado de ambas en una única tabla
para ello utilizo la sentencia UNION

select * FROM Reservas
UNION
select * from ReservasEspeciales

hasta aquí correcto, el problema es que quiero que el conjunto
del resultado está ordenado por fecha ...
Como lo puedo hacer?

si hago lo siguiente
select * FROM Reservas order by fecha
UNION
select * from ReservasEspeciales order by fecha

Me ordena las dos consultas pero no el conjunto de ellas....

Alguien sabe como lo puedo hacer ?

Gracias
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 01/04/2008, 02:38
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: Ordenar El resultado de un UNION

Prueba asi:

select * from (select * FROM Reservas
UNION
select * from ReservasEspeciales) order by fechas;


Un saludo
  #3 (permalink)  
Antiguo 01/04/2008, 03:25
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Ordenar El resultado de un UNION

OK!!!


así si que me ha funcionado

Gracias!!!!
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #4 (permalink)  
Antiguo 02/04/2009, 09:48
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Ordenar El resultado de un UNION

Una pregunta..
Con qué sistema de bases de datos te ha funcionado esto?
Por lo menos con SQL Server, las consultas UNION solo permiten un solo ORDER BY que actúa sobre todos los registros de la UNION, y debe ir escrito al final de la sentencia.
De hecho, esas líneas que has puesto más arriba no tienen una sintaxis correcta en SQL Server:
Código:
select * FROM Reservas order by fecha
UNION
select * from ReservasEspeciales order by fecha
El primer ORDER BY daría error.
Quitándolo de ahí, solo quedaría el último, que actuaría sobre todos los registros de la UNION, y la sintaxis ya quedaría correcta.
Un saludo.
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 02/04/2009, 10:42
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Ordenar El resultado de un UNION

moNTeZIon : en SQL tendrias que colocarle un "alias" a los resultados del union:

select *
from ( SELECT'S UNION ) T
order by t.campo

saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #6 (permalink)  
Antiguo 27/01/2011, 23:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Ordenar El resultado de un UNION

DISCULPEN pero tengo un problema similar... y necesito saber como usar los ALIAS para que me quede bien la consulta:


Cita:
SELECT fullname, gender
FROM `enco_accounts`
WHERE gender =0 LIMIT 8
UNION (SELECT fullname, gender
FROM `enco_accounts`
WHERE gender =1 LIMIT 13)
...OK (funciona de 10 pero necesito ordenar)


y.. trato de ordenar todo por lastlogin:

Cita:
SELECT * FROM (
SELECT fullname, gender
FROM `enco_accounts`
WHERE gender =0 LIMIT 8
UNION (SELECT fullname, gender
FROM `enco_accounts`
WHERE gender =1 LIMIT 13)
) t ORDER BY t.lastlogin

El tema es que no me funciona! me pide que use ALIAS..y no se como! GRACIAS DESDE YA!
__________________
Salu2!
  #7 (permalink)  
Antiguo 28/01/2011, 16:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Ordenar El resultado de un UNION

¿Qué base de datos usas?
Has intentado esto
SELECT t.fullname, t.gender, t.lastlogin FROM (
(SELECT fullname as fullname, gender as gender, lastlogin as lastlogin
FROM `enco_accounts`
WHERE gender =0 LIMIT 8)
UNION (SELECT fullname, gender, lastlogin
FROM `enco_accounts`
WHERE gender =1 LIMIT 13)
) t ORDER BY t.lastlogin

No he probado
  #8 (permalink)  
Antiguo 28/01/2011, 22:49
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Ordenar El resultado de un UNION

Cita:
Iniciado por jurena Ver Mensaje
¿Qué base de datos usas?
Has intentado esto
SELECT t.fullname, t.gender, t.lastlogin FROM (
(SELECT fullname as fullname, gender as gender, lastlogin as lastlogin
FROM `enco_accounts`
WHERE gender =0 LIMIT 8)
UNION (SELECT fullname, gender, lastlogin
FROM `enco_accounts`
WHERE gender =1 LIMIT 13)
) t ORDER BY t.lastlogin

No he probado
AMIGAZO Jurena! vas encaminado... ya los ordena..... el tema es que necesito que en total sean 13 registros (un numero determinado) y se me complica aun mas porque pensaba paginar esa consulta:

mostrar de a 13 registros por pagina, donde 8 registros tienen gender=0 y el resto (los otros 5) gender=1

La idea es forzar una mezcla definida de registros cada vez..... y SE que me estoy excediendo porque este es un THREAD ageno, asi que si queres... podes responderme en http://www.forosdelweb.com/f86/menos-50-tipo-n-880638/

GRACIAS A VOS y a quien quiera colaborarme
__________________
Salu2!
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 00:54.