質問

これは、誰かがうまくこのに実行することができ、それが助けになるかもしれないので、自分の質問に答えるでの私の最初の試みです。 Firebirdのを使用して、私は、与えられた列に出力結果をソートし、UNION ALLを使用して2つのクエリの結果を結合します。ような何かます:

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

括弧は、他のデータベースのための有効な構文から来て、UNION ALLに必ず議論を行うために必要とされている - ドン」(テーブル上で動作するように定義されています操作順不同のレコードのセットをIE) tは個別に注文することを試みます。しかし、私はこの構文は、Firebirdの中で動作させることができなかった - どのようにそれを行うことができます。

役に立ちましたか?

解決

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

他のヒント

フィールド名は同じである必要はありません。あなたが順にフィールド名を使用することはできません理由です。
代わりに、フィールドインデックスを使用することができます。以下のように:

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  

いかがます:

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2
あなたが代わりにエイリアスを使用しての「数」で注文した場合、

少なくとも、新しいFirebirdのバージョンではそれが動作します。

Firebirdの1.5で、これは私のために動作します。

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

し、

select C1, C2, C3 from V1 order by C3

ORDER BYを使用してビューから選択し、ALL(ORDER BY句なしの)ビューでUNIONを行います。

クエリ尾にorder byを移動すると、出力データグリッドへのなしの効果はありません。

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
)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top