2017-05-14 6 views
0

私はOracleの3つのテーブルに昨日から今日、昨日から昨日までのデータが含まれており、列名は「日付」です。私は昨日からのデータを含むテーブルのテーブル名を 'date'カラムに基づいて見つける必要があります。参加する必要がないために参加なしで照会するにはどうすればいいですか結合のない複数のテーブルからのSQL

+0

mysqlタグを削除してください。サンプル・テーブル・データ、期待される出力、試したことを表示します。 – OldProgrammer

答えて

1

テーブルを結合することができます。例えば

(すべての日付フィールドを想定すると、12 PMが含ま):

SELECT tablename 
FROM (
    SELECT 'TABLE1' tablename, datefield 
    FROM TABLE1 
    UNION ALL 
    SELECT 'TABLE2' tablename, datefield 
    FROM TABLE2 
    UNION ALL 
    SELECT 'TABLE3' tablename, datefield 
    FROM TABLE3) 
WHERE datefield = TRUNC(SYSDATE - 1); 

全てdatefields 12 PMない場合、一定時間の間で使用するように調整します。

非常に大きなテーブルの場合、WHEREステートメントを各テーブルUNIONに移動します。

0

あなただけのテーブル名をしたいとあなたは1があることがわかっている場合:

select (case when exists (select 1 from table1 where datefield = trunc(sysdate - 1)) 
      then 'table1' 
      when exists (select 1 from table2 where datefield = trunc(sysdate - 1)) 
      then 'table2' 
      when exists (select 1 from table3 where datefield = trunc(sysdate - 1)) 
      then 'table3' 
     end) as whichtable 
from dual; 

これはあなたの条件を満たしている最初のテーブルを返します。

関連する問題