1

バックストーリー:私には奇妙な状況があります。私自身と提携している組織は、私たちが頻繁に使用するデータベースを提供してくれます。他のいくつかの組織もそれを使用していますが、私たちの記録は全体の 90% を簡単に超えています。ライブ データベースに接続されているデータ入力用の Web フロントエンドがありますが、定期的に送信される選択されたテーブルの Access ファイルとしてバックエンド データのみを取得します。

これは一般的に厄介なことですが、私がすべてのレポートで遭遇する重大な問題は、私たちの組織によって作成された記録と他の組織の記録を区別することです. レコードはそれらを作成したスタッフによって識別されますが、users テーブル自体は持っていません (そして取得する可能性は低いです)。つまり、どのユーザー ID がどのユーザーに対応しているか、またそれらのユーザーが私たちの組織などに属しています。現在、データ抽出にリンクし、そのような情報をデータテーブルに追加するクエリを持つ一種のシャドー DB を構築しています。そのため、レコードのリストを引き出すと、ユーザー ID、名前、組織、役割などで取得できます。

問題: すべてのユーザーがすべてのタイプのレコードを作成または変更するわけではないため、このリストを完成させるために必要なユーザー ID が複数のテーブルに散らばっています。これらすべてのテーブルから一意のユーザー ID のリストを作成するにはどうすればよいですか? 私は現在、2 つの最大のテーブルの ID の結合を使用していますが、サブクエリをサブクエリにスタックしてそれを機能させることができるかどうかはわかりません。それが最終的に機能する場合。他の方法にも興味があります。

TL;DR: 複数のテーブルにまたがる複数の列の一意の値の列を取得する最も簡単な方法は何ですか?

4

1 に答える 1

4

各テーブルのSELECTクエリをUNIONクエリに結合します。UNIONクエリは個別の値を返します。

SELECT UserID FROM Table1
UNION
SELECT UserID FROM Table2
UNION
SELECT UserID FROM Table3;
于 2010-08-25T18:01:30.607 に答える