SQL Server - Order by en union

 
Vista:
sin imagen de perfil

Order by en union

Publicado por Fati (8 intervenciones) el 20/12/2010 02:52:43
Hola amigos, recurro a uds despues de mucho buscar una solucion

tengo unos 3 select que estan unidos por UNION ALL (valga la redundancia)
lo que necesito es hacer un order by de solo el select del medio....

el primer select y el tercero retorna SIEMPRE solo una fila
sin envargo el segundo retorna varias ya que se refiere a un listado de productos pedidos (y es esta la que quisiera ordenar)
el campo por el que quiero ordenar es el cod_producto que no estan en el primer ni el ultimo select
La primera linea que retorna el select siempre debe retornar primero luego el segundo y luego el tercero
ejemplo
RUC---DIRECCION ------->corresponde al primer select
3188--sandalias--blanco------------->corresponde 2do select
3186--platos--azul
3187--jabonpolvo--blanco
....
....
...
telefono---codigo postal ---------->corresponde 3er select

COMO VERAN el select del medio retorna los productos desordenados.... es lo que quisiera ordenar... desde ya muchas gracias amigos!!! saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Order by en union

Publicado por Juan Manuel Cruz (59 intervenciones) el 20/12/2010 11:14:00
Podrías agregar un campo señuelo para cada select

Select 1 as Idd, * from Tabla1
union
Select 2 as Idd, * from tabla2
union
Select 3 as Idd, * from tabla3
Order by Idd, OtroCampo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Order by en union

Publicado por fati (8 intervenciones) el 20/12/2010 23:10:04
Gracias juan por tomarte el tiempo...
ya hice eso que me recomendaste pero eso no me sirve, ya que ese campo señuelo imprime en el resultado y es lo que no quiero, ya que con el select que deseo hacer estoy generando un archivo txt. y si uso el señuelo van los datos del mismo al txt y entonces ya no me sirve el formato del archivo generado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Order by en union

Publicado por jams (93 intervenciones) el 24/01/2011 21:10:46
prueba esto

declare @tabla1 table(c1 int)
declare @tabla2 table(c2 int)
declare @tabla3 table(c3 int)

insert into @tabla1 values(1)
insert into @tabla2 values(2)
insert into @tabla3 values(3)

select * from (
select * from @tabla2
union all
select * from @tabla1
union all
select * from @tabla3
)x order by 1

saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Order by en union

Publicado por Augusto (2 intervenciones) el 20/09/2012 16:14:16
Se me ocurre usar una subconsulta, algo como lo siguiente:

SELECT c1, c2
FROM(
SELECT c1, c2 FROM T1

UNION

SELECT c1, c2 FROM T2) T
ORDER BY 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaac Daniel

Order by en union

Publicado por Isaac Daniel (2 intervenciones) el 21/09/2012 17:52:25
Tal vez te sirva esto

SELECT p.Name, v.Name
FROM Production.Product p
JOIN Purchasing.ProductVendor pv
ON p.ProductID = pv.ProductID
JOIN Purchasing.Vendor v
ON pv.BusinessEntityID = v.BusinessEntityID
WHERE ProductSubcategoryID = 15
ORDER BY v.Name;

has la union con el join claro tus tablas deven de tener un campo en comun y asi puedes utilizar el order by PRIMEROLATABLA.COLUMNA para especificar como lo quieras ordenar

espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar