このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

使用することのできるデータベースコンポーネント (テーブルまたはビューなどの) を直接ジョインコンポーネントに接続すると、 SQL モード ( mf_ic_join_sql_enabled ) ボタン がジョインコンポーネントの右上に自動的に表示されます。SQL モードが有効化されていると、ジョインオペレーションは、マッピングがデータを読み込む箇所でデータベースにより行われます。すなわち、 MapForce は、ジョインに使用される全てのテーブルからのデータを選択し結合するために適切な SQL 構文を使用して、内部でデータベースにクエリを送信します。重要な点は、SQL を書く必要がない点です。ジョインコンポーネントがマッピング上でデザインされた方法をベースにして必要なく襟が生成されます。次のサンプルを参照してください。

 

メモ: データベースと SQL パースペクティブから、 MapForce により生成されたジョインは常に INNER ジョインです。これは、両方の入力セット内の条件を満たすレコードのみがジョインコンポーネントにより返されます。

 

SQL モードを可能にするためには、以下の条件が満たされている必要があります:

 

1.ジョインされる両方のオブジェクト (テーブルまたはビュー) は、同じデータベースから与えられなければなりません。

2.ジョインされる両方のオブジェクトは、 同じ MapForce コンポーネントから与えなければなりません。 (コンポーネント内でデータベースオブジェクトを追加および削除する方法は以下のとおりです: データベース コンポーネントを右クリックして、コンテキストメニューから追加/削除/編集 データベースオブジェクトを選択します)。

3.ジョインの条件 (または条件)は、マッピング上ではなく、コンポーネント プロパティ からのみ定義されます(ジョインコンポーネントのヘッダーを右クリックして、プロパティ を選択します) (次を参照してください: ジョインの条件の追加)。

 

メモ:SQL モード内でデータベーステーブルがジョインされると、MapForce は、テーブル間で検出された外部キーリレーションシップをベースにして、ジョインの条件を自動的に作成します。自動的なジョインの条件が起こるには、データベーステーブルが MapForce コンポーネント上で親子関係内に存在する必要があります (すなわち、1つのテーブルが「親」または「子」で、他のテーブルがコンポーネント上に存在する必要があります)。 サンプル: SQL モード内のテーブルのジョインを参照してください。

 

4.すべてのデータベーステーブルは、現在のターゲットコンテキスト内にまだ存在することはできません。 例えば、ジョインの操作前にマッピングがテーブルをクエリするようにデザインされている場合、ジョインを行うことは不可能になります。マッピングの実行に関する詳細は、次を参照してください: マッピングのルールと戦略

 

ジョインコンポーネントの右上にある SQL ( mf_ic_join_sql ) ボタンを使用して、 SQL モードを閲覧または管理することができます:

 

mf_ic_join_sql

SQL モードが無効化されています。

mf_ic_join_sql_enabled

SQL モードが有効化されています。

 

mf_ic_join_sql ボタンが不足している場合、SQL モードは意味を成さないことを示します 、または ジョインされたデータのためにサポートされていないことを意味します。

 

特定のケースの場合、 SQL モードは明示的に無効化されている必要があります ( mf_ic_join_sql )、例:

 

異なるデータベースからのテーブルをジョインする場合。 異なるデータベース言語間の差異のため異なるデータベース間の SQL モードでのジョインは不可能です。 しかしながら、標準 (非-SQL) には制約は適用されません。

ジョインコンポーネント プロパティの外部でマッピングがジョインの条件を必要とする場合、 (条件がマッピング上で定義されており、ジョインコンポーネントの condition アイテムに接続されている場合 )。

 

ジョインされたデータベーステーブル 、またはビューに同一のフィールド名が含まれていることが頻繁にあります。SQL モードが有効化されると、 このようなアイテムは、キーワード 「AS」 によりプレフィックスされたコンポーネント上に表示されます。例えば、2つのジョインされたテーブルが 「id」 フィールドを含む場合、 このフィールドは、最初にジョインされたテーブル上で 「id」 として表示されます、そして、2番目にジョインされたテーブルでは「id AS id2」 として表示されます。ジョインされたテーブルは、例えば、同じテーブルがテーブル内でジョインされた場合、エイリアス名を生成することができます。

 

マッピング上で後に参照する場合エイリアス フィールドまたはテーブル名は、重要です。例えば、ジョインコンポーネントの出力が SQL WHERE/ORDER コンポーネントに接続されている場合などです。目的を達成するには、ジョインコンポーネントの出力を、 SQL WHERE と ORDER BY 句を入力する SQL WHERE/ORDER コンポーネントに接続することができます。

 

WHERE 句からフィールドを参照するには、 フィールド名が後に続き、 ピリオド (.) 文字が後に続く、テーブル名を書き込みます。テーブルエイリアスを参照するには、ジョインコンポーネントに表示される順のエイリアス名を使用します。ORDER BY 句内では、同じテクニック (table.field) 、 または、(「AS」 の後に表示される名前である)エイリアスフィールド名を書き込みます。

 

SQL WHERE/ORDER 句を使用するマッピングのサンプルに関しては、サンプル: SQL モード内のジョインテーブル を参照してください。

 

データベーステーブルとジョインコンポーネント間は許可されていません。ジョインコンポーネントの(前ではなく)後に追加することができます。SQL WHERE/ORDER コンポーネントの詳細に関しては、次を参照してください: データベースデータのフィルターと並べ替え (SQL WHERE/ORDER)

(C) 2019 Altova GmbH