2016-07-29 7 views
0

SQL Server 2012を使用しています。これらのテーブルに参加できる2つのテーブルを結合したいのですが、テーブル?例えば2つのテーブル間のリレーションシップを取得するために必要なすべてのテーブルの検索

:私はtable DTable Aに参加すると、私はBにし、その後CへとDに終わりAを接続する必要があることを行う必要があります。

私の質問は、テーブルごとにテーブルを検索せずにデータベース内の何千ものテーブルの中でテーブルBCを見つけることができますか?

どうもありがとう、 オハッド

+1

サンプルテーブルのデータと予想される結果を追加します。 (1000年代のテーブルでは...おそらく設計上の問題です!) – jarlh

+0

2つの任意のテーブルの間に複数の外部キーとパスがあることは(一般的に)完全に可能です。したがって、テーブル間の "the"パスを見つける方法はありません。 –

答えて

0

あなたの原因を助けるために行うことができます物事のカップルがありますが、ほとんどの部分は、直接的な方法はありませんし、あなたのデータベースが構成されている方法を知っておく必要がありますテーブルの目的。さらに、データベースの設計に基づいて、直感的に答えを見つけることは非常に難しく、データベース設計に精通した人からの指導を受けるだけでよいでしょう。かかわらず:あなたのテーブルの

フィールド& D: は、あなたがそれらのテーブルにリンクすることができ、他のどのようなテーブルを決定する主要なフィールドやテーブルのユニークなフィールドで見ることができます。通常、それらは他のテーブルと一致する方法で名前が付けられ、どのテーブルから来ているのかを知ることができます。

INFORMATION_SCHEMAビュー あなたは簡単にデータベース全体のテーブルと列の名前を検索し、以下の表に、検索を絞り込むためにINFORMATION_SCHEMA.TABLESとinformation_schema.columnビューを使用することができます。

0

と仮定すると:

  1. あなたは、このプロセスを自動化したい
  2. 次のようにあなたはあなたが進むべき

に頼ることができるFOREIGN KEY制約を持っている:

  1. sys.foreign_keysを照会し、テーブル間のリンクを含む有向グラフ構造を作成します。
  2. テーブルAから開始し、テーブルDとDからAへのパスを検索するグラフ検索アルゴリズムを実装します。
  3. パスを見つけたら、パス上のすべてのテーブルの結合。 JOINのON句を作成できるようにするには、sys.foreign_key_columnsも照会する必要があります。

詳細についてはヘルプが必要な場合はお知らせください。

関連する問題