2

AB、およびCの3 つのテーブルがあります。それらはすべて異なるデータを保持しますが、共通の列がいくつかあります。

AB、およびCにすべて列C1およびC2がある場合、3 つのテーブルのいずれかにある可能性のあるC1値を使用して、特定のC2値を検索するにはどうすればよいですか?

基本的に、単純なルックアップを行いたいのですが、3 つのテーブルの結合に基づいて動作させたいのですが、これを実現するためにビューを使用したくありません。

これはIngres Vectorwiseデータベースであることに注意してください。

4

2 に答える 2

8

これを行うには、from句でテーブルを結合します。

select c2
from ((select c1, c2 from a) union all
      (select c1, c2 from b) union all
      (select c1, c2 from c)
     ) t
where c1 = <your value>

union allパフォーマンス上の理由から使用しました。値の重複が懸念される場合は、 を使用するunionか、 に追加distinctselectます。

これは標準 SQL であり、どのデータベースでも機能するはずです。

于 2012-10-25T18:48:51.493 に答える
1

「C1値を使用した特定のC2値」とはどういう意味かわかりませんが、ビューに対するクエリが何であれ、そのクエリを繰り返して結果を結合します。

SELECT *
FROM A
WHERE C2 = ?
UNION ALL
SELECT *
FROM B
WHERE C2 = ?
UNION ALL
SELECT *
FROM C
WHERE C2 = ?

(ビューは標準の SQL 機能であり、作成するクエリをより簡単にします。)

于 2012-10-25T18:48:59.187 に答える