データベースのデータのジョイン

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce とデータベース >

データベースのデータのジョイン

データベースからデータを読み取るマッピング内では、データベースオブジェクト テーブルまたはビューなどを、マッピングにジョインコンポーネントを追加することによりジョインすることができます。例えば、データがリレーショナルデータベース内に保管される外部キーリレーションシップによりバウンドされた 2つ、または、複数のテーブルからのデータを組み合わせることができます。INNER JOIN オペレーションを使用して2つまたは複数のテーブルがジョインされた箇所にデータベース SQL クエリを実行する結果と同じ結果になります。

 

ジョインコンポーネントに接続されているデータの型により、ジョインの操作は、標準 (非-SQL) モード、または、SQL モード内で行うことができます。非-SQL モード内のジョインは、マッピングエンジン*により実行され、SQL モード内のジョインは、マッピングがデータを読み取るデータベースにより実行されます。

 

非-SQL モード内のジョインは、コンポーネント型を入力としてサポートするため柔軟性に富んでいます (例えば、ジョインは異なるデータベースからのテーブル間、または、XML 構造とデータベーステーブル間であることができます)。非-SQL ジョインの例は、次を参照してください: サンプル:  XML 構造のジョイン。その一方、 非-SQL ジョインの実行は、マッピングエンジンにとり更にメモリを必要とする実行となります。(これは、比較の総数がジョインされた構造のクロスジョイン、または、デカルト積を表すためです)。通常、データを中心としたマッピング内では、この過程はとても速く、影響が小さいです。 しかしながら、ジョインしたデータソースが大量の記録により構成される場合、マッピングは実行するために時間を要します。

 

SQL モード内のジョインは、 使用することのできる(テーブルまたはビューなどの)データベースオブジェクトを入力として受け入れます、しかしながら、データベースによりネイティブにより良いマッピングを行うため、柔軟性のある 非-SQL ジョインとしては受け入れません。 詳細に関しては、次を参照してください: SQL モード内のジョインについて.

 

メモ:ジョインコンポーネントの使用のみがデータベーステーブル、または、ビューをジョインする唯一の方法ではありません。 データベースへのジョインの適用は SQL SELECT ステートメントを使用して行われます データベースデータの選択 (SQL SELECT) を参照してください。SQL SELECT ステートメントのジョインコンポーネント主要な違いは、 前者は手動で作成され、そのために柔軟性があります。しかしながら、 SQL ステートメントを手動で作成を希望しない場合、 ジョインコンポーネントは簡単な代替方法です。

 

 

ジョインコンポーネントを追加する方法:

1.マッピング 変換言語を BUILT-IN に設定します(これを行うには ic-builtin ツールバーボタンをクリックします、または、 「出力 | Built-In 実行エンジン」 メニューコマンドを使用します)。
2.「挿入」 メニューから 「ジョイン」 をクリックします。または、 「ジョイン」 ( mf_ic_join_button ) ツールバーボタンをクリックします。ジョインコンポーネントがマッピングに表示されます。デフォルトでは2つの構造からデータを受け入れるため、2つの nodes/rows 入力が存在します。必要であれば、「入力の追加」( gui_add_function_parameter ) ボタンをクリックして、ジョインに新しい入力を追加することができます。以下を参照してください 3つ以上の構造をジョインする

mf_join

3.ジョインコンポーネントの nodes/rows アイテムとジョインされる構造を選択します。
4.ジョイン (または 複数の条件)のための条件を追加してください。 これを行うには、 ジョインコンポーネントを右クリックし、プロパティ を選択します。ジョインの条件は、関数のブール値の結果をジョインコンポーネントの condition アイテムに接続することにより、マッピングから直接追加することができます。データベースがジョインされる特定の場合、ジョインの条件は自動的に MapForce  により作成されます。詳細に関しては、次を参照してください: ジョインの条件の追加

 

 

メモ:

 

ジョインコンポーネントは、 BUILT-IN 実行エンジン内でのみサポートされています。C#、 C++、または Java 内でのコードの生成はサポートされていません。
構造がサポートされていない、または、ジョインのための入力ソースによりサポートされて以内場合、  MapForce マッピング上直接ヒントを表示するか、または、マッピングを検証する際に、メッセージウィンドウ内にヒントを表示します。マッピング (次を参照してください: マッピングの検証)。
ジョインコンポーネントをインラインユーザー定義関数の結果または入力パラメーターに接続しないでください。このような接続が存在すると、マッピングの検証中に検証エラーが発生します。
使用することのできるデータベースコンポーネント (テーブルまたはビューなどの) を直接ジョインコンポーネントに接続すると、 SQL モード ( mf_ic_join_sql_enabled ) ボタン がジョインコンポーネントの右上に自動的に表示されます。有効化されると、このボタンは、ジョイン操作に適用することのできる特別な SQL 機能を提供します (次を参照してください: SQL モード内のジョインについて)。
3つ以上の構造をジョインする必要がある場合、複数のジョインコンポーネントを追加して、「重ねて」表示します (すなわち、ジョインコンポーネントの出力を他のジョインコンポーネントの入力として与えます)。ジョインされたシーケンス全部を他のジョインの入力としては使用できないことに注意してください。 ジョインされた アイテムの出力を他のジョインコンポーネントに接続しようと試みると、エラーメッセージが表示されます。しかしながら、ジョインの結果の一部を他のジョインに接続することは可能です。
SQL モードでは、ジョインを重ねて表示することはサポートされていません。 しかしながら、 ジョインされた子孫 (子) テーブルを他のジョインに接続することは可能です。代わりに、SQL SELECT ステートメントを使用することができます (次を参照: 仮想テーブルとしての SQL SELECT ステートメント)。親と子テーブルに関する詳細は、次を参照してください: データベースリレーションシップの扱い方

(C) 2019 Altova GmbH