2016-04-11 6 views
0

私はSQLにいくぶん新しかったので、まだ簡単なことのいくつかを習得しようとしています。特定の行の複数のSQLテーブルを検索し、テーブル名と同様に行を返します

今私はアプリケーション(顧客、代理店、マネージャー)上の異なるアクセスレベルのための複数のテーブルを持っています。

ユーザー名はこれらの表では共有できません。私は、ユーザー名に基づいてユーザーの行を選択しようとしています。

ユーザーのためのテーブルが1つしかない場合、これを行う方法は簡単にわかりますが、同時に複数のテーブルを検索する方法がわかりません。

また、ユーザー名が見つかった場合は、そのユーザー名が見つかったテーブルの名前を返す方法がありますか?

ありがとうございました!すべてのテーブルのレイアウトを想定し

答えて

0

が同じである:

SELECT * 
FROM (
     SELECT 'customers' tn, * 
     FROM customers 
     UNION ALL 
     SELECT 'managers' tn, * 
     FROM managers 
     UNION ALL 
     SELECT 'representatives' tn, * 
     FROM representatives 
     ) q 
WHERE username = @myusername 
2

あなたは1行のみのユーザxxxとして返されますと、単純なUNIONはあなたが

SELECT 'table1' as tab, c1, c2, c3 FROM table1 WHERE uid='xxx' 
UNION 
SELECT 'table2' as tab, c1, c2, c3 FROM table2 WHERE uid='xxx' 
UNION 
SELECT 'table3' as tab, c1, c2, c3 FROM table3 WHERE uid='xxx' 

を必要とするすべてのかもしれませんにのみ存在することができますあなたが興味を持っているすべての列とテーブル名を含む最初の列を得たテーブルの1つ

関連する問題