Combinando UNION ALL y ORDER BY en Firebird

votos
13

Este es mi primer intento de responder mi propia pregunta, ya que alguien podría encontrarse con esto y podría ser de ayuda. Usando Firebird, quiero combinar los resultados de dos consultas usando UNION ALL, luego ordenar el resultado resultante en una columna dada. Algo como:

(select C1, C2, C3 from T1)
union all 
(select C1, C2, C3 from T2)
order by C3

Los paréntesis provienen de la sintaxis válida para otras bases de datos, y son necesarios para asegurarse de que los argumentos a UNION ALL (una operación que está definida para trabajar en tablas, es decir, un conjunto de registros desordenados ) no intenten pedirse individualmente. Sin embargo, no pude lograr que esta sintaxis funcionara en Firebird, ¿cómo se puede hacer?

Publicado el 09/12/2008 a las 22:00
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
24

SELECT C1, C2, C3
FROM (
    select C1, C2, C3 from T1
    union all 
    select C1, C2, C3 from T2
)
order by C3
Respondida el 09/12/2008 a las 22:08
fuente por usuario

votos
12

Los nombres de campo no son obligatorios para ser iguales. Es por eso que no puede usar el nombre del campo en el orden por.
Puede usar el índice de campo en su lugar. Como en:

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  
Respondida el 09/12/2008 a las 23:18
fuente por usuario

votos
4

Qué tal si:

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2

Al menos en las versiones más nuevas de Firebird funciona si compras dentro de "Número" en lugar de utilizar un alias.

Respondida el 23/06/2015 a las 15:15
fuente por usuario

votos
2

En Firebird 1.5 esto funciona para mí

create view V1 (C1, C2, C3) as
  select C1, C2, C3 from T1
  union all 
  select C1, C2, C3 from T2

y entonces

select C1, C2, C3 from V1 order by C3
Respondida el 03/02/2009 a las 15:48
fuente por usuario

votos
1

Realice UNION ALL en una vista (sin la cláusula ORDER BY), luego seleccione de la vista usando ORDER BY.

Respondida el 09/12/2008 a las 22:02
fuente por usuario

votos
0

Moviendo order byen una cola de consulta tiene ningún efecto a la cuadrícula de datos de salida.

select * from (
    select first 1
        C1
    from T1
    order by id desc
)
union all
select * from (
    select first 1
        C1
    from T2
    order by id desc
)
Respondida el 17/04/2017 a las 18:59
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more