Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consultas de union ordenadas (https://www.clubdelphi.com/foros/showthread.php?t=21701)

tiagor64 25-05-2005 12:21:23

consultas de union ordenadas
 
Hola:

Tengo un problema con una consulta sql de union, necesito unir dos selects, que contienen como campos para ordenar f.entrada y orden_fabricacion, pero necesitaria que el campo orden de fabricacion en una consulta se ordene de forma ascendente y en otra de forma descendente, pero algo pasa porque solo me lo ordena de la forma que le digo en la segunda consulta.

Es posible ordenar en una consulta de union el mismo campo de diferente forma en cada select?? si es posible agradeceria me dijerais que es lo que hago mal, aqui esta el codio que escribo en acces

Código:

SELECT LINEA2.ORDEN_FABRICACION, chasislinea2.n_chasis, LINEA2.marca, LINEA2.MODELO, chasislinea2.fechaentrada, chasislinea2.fechaverificacion
FROM LINEA2 INNER JOIN chasislinea2 ON LINEA2.XASSIS = chasislinea2.n_chasis
WHERE (((chasislinea2.fechaentrada) Is Null))
ORDER BY LINEA2.ORDEN_FABRICACION DESC;
UNION
SELECT LINEA2.ORDEN_FABRICACION, chasislinea2.n_chasis, LINEA2.marca, LINEA2.MODELO, chasislinea2.fechaentrada, chasislinea2.fechaverificacion
FROM LINEA2 INNER JOIN chasislinea2 ON LINEA2.XASSIS = chasislinea2.n_chasis
WHERE (((chasislinea2.fechaentrada) Is Not Null) AND ((chasislinea2.fechaverificacion) Is Null))
ORDER BY chasislinea2.fechaentrada ASC, LINEA2.ORDEN_FABRICACION ASC;

Tengo necesidad de hacer esto para sacar un listado, asi tomaria el query este como origen de datos.
Si no es posible solucionar el problema asi, me podria decir otra forma de plantearlo.

Gracias.

romullma 25-05-2005 14:27:28

No estoy seguro si alguna B.D. soporta lo que quieres, pero por lo general los motores de B.D. aplican la sentencia de ordenación sobre el resultado global de la consulta, es decir sobre las filas recogidas una vez efectuada la unión.

lgarcia 25-05-2005 14:39:27

Consultas de union ordenadas
 
Hola

En la ayuda de SQL dice que para realizar UNION solo puede usar el Order By en la ultima de ellas. Yo te recomiendo que ese proceso lo realices creando una tabla temporal donde insertes las consultas y ordenes al final la tabla temporal por el criterio que necesita y podras resolver el problema. Yo cada vez que una consulta se me pone dificil recurro a la creacion de tablas y eso no falla.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

ramiretor 30-05-2005 20:14:34

Hola foreros:
No conozco muchos motores, pero me parece que sí se puede ordenar todo lo que traiga la consulta, por ejemplo:
Código SQL [-]
  Select campo1, campo2.....
  union
  select campo1, campo2
  order by 1

El 1 es el campo1 que traerá toda la consulta, si quisiera ordenar por campo2, cambio por order by 2

A ver prueben si funciona en otros motores y hagan favor de comentarlo

Saludos

delphi.com.ar 30-05-2005 20:25:58

¿En qué motor estas ejecutando la consulta?...

¿Puede hacer esto?, no es prolijo pero puede ser una opción:
Código SQL [-]
SELECT * FROM 
(
   SELECT CAMPO1, CAMPO2 FROM TABLA1
   UNION ALL
   SELECT CAMPO1, CAMPO2 FROM TABLA2
)
ORDER BY 1, 2


La franja horaria es GMT +2. Ahora son las 05:04:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi