2016-10-24 5 views
1
select * 
from 
    { 
     SELECT 
      ID, CLASS, CHANGE_NUMBER AS OBJECT_NUMBER 
     FROM table_A 

     UNION 

     SELECT 
      ID, CLASS, CUST_NO AS OBJECT_NUMBER 
     FROM table_B 
     ORDER BY ID 
    } x where x.id ='5434'; 

このクエリを実行するのに手伝ってください。UNION文の上のSELECTステートメント

私はこのようなクエリを書くことを示唆しているエラー「無効なテーブル名」

+0

チェックあなたは、単に 'UNION'を実行し、両方の選択に' WHERE'を追加するときに計画が変更された場合。あなたがする必要がある場合があります – dnoeth

+0

スキーマ内に両方のテーブルがありますか? –

答えて

3

を取得しています:

select x.* 
from (SELECT ID, CLASS, CHANGE_NUMBER AS OBJECT_NUMBER FROM table_A 
     UNION ALL 
     SELECT ID, CLASS, CUST_NO AS OBJECT_NUMBER FROM table_B 
    ) x 
where x.id = '5434'; 

注:

  • を中括弧は、おそらくあなたの文法問題です。
  • UNIONの代わりにUNION ALLを使用します。重複を削除するオーバーヘッドが本当に発生しない限り、使用しないでください。
  • ORDER BYは不要です。結局、idを1つだけ選択しています。
  • ORDER BYがある場合は、サブクエリより外側のクエリに配置する方が適切です。
+0

ありがとうございました!Gordonありがとうございました!!!あなたの提案を感謝します! – Saurabh

+0

@Saurabh - 私はそうですGordonの優れた提案に追加してください:この場合、エイリアス 'x'が必要な理由は明確ではなく、さらに重要な理由がない限り' select * 'を避けてください。列を追加するたとえば、何らかの理由でテーブルに追加すると、明示的に列をスペルアウトするのではなく、 'select *'を使用すると、このクエリの出力に依存する他のすべてのステートメントは無効になります。 – mathguy

+0

@ mathguy、@ gordon linoff - みなさんありがとう、私はplmで働いています、私はWebアプリケーションを作成しています。現在の状況では、私はplmシステム(plmデータベースからデータの50〜60%)からデータを抽出し、必要に応じて他のデータベースに保存する必要があります。また、タイムスタンプに応じて他のデータベースに更新があれば、毎日これを行う必要があります。私が直面している問題は、多くの列データがIDであり、その文字列値が他のテーブルにマップされていることです。あなたはこのような状況のようないくつかのサンプルの例を共有することができますので、私はこれに取り組むことができます。何かのチュートリアル、最良の例のように – Saurabh

1

使用「(」の代わりに「{」がブラケット。

  select * from 
      (
      SELECT ID,CLASS, CHANGE_NUMBER AS OBJECT_NUMBER FROM table_A 
      UNION 
      SELECT ID,CLASS,CUST_NO AS OBJECT_NUMBER FROM table_B 
      ORDER BY ID 
      ) x where x.id ='5434'; 
+0

ありがとうmr.Bhosale – Saurabh

+0

大歓迎... Saurabh bhava –

+0

こんにちはmr.bhosale mala tumchiヘルプpahije – Saurabh

関連する問題