サンプル: 複数のテーブルから CSV レポートを作成する

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

ホーム >  データソースとターゲット > MapForce とデータベース > データベースのデータのジョイン >

サンプル: 複数のテーブルから CSV レポートを作成する

このサンプルは、 CSV フォーマットの単一のレポートにデータを抽出する目的のための複数のデータベーステーブルのジョインの方法について説明しています。このサンプルで使用されている データベースは、Nanonull.sqlite で、以下のパスで見つけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\。 このデータベースは、(注文、製品、および住所が含まれる)架空の会社の情報を含んでいます。リレーショナル データベースでは通常、情報が情報が正規化され、複数のテーブルに分割されます。例えば、 users テーブルには、(姓、名、および電子メールアドレスがふくまれる)ユーザーの個人の情報が保管されます。データベースは、ユーザーにより注文された製品の情報が2つの異なるテーブルに含まれます: (注文の一意の ID 、および注文の時刻を含む) orders および(注文された製品のリスト、および、個数が含まれる) orderedproducts。 更に、製品の名前は products という異なるテーブルに保管されます。

 

このサンプルの目的は、特定の製品を誰が、何個注文したかを明確にするため、異なるテーブルより抽出されるデータをベースにしたレポートの生成です。この目的を達成するには以下の手順を行います:

 

1.「挿入」 メニューから データベース をクリックします。
2.データベース型を選択するようにプロンプトされると、 「SQLite」をクリックして、「次へ」をクリックします。
3.上記の Nanonull.sqlite データベースを参照し、「接続」をクリックします。
4.プロンプトされると、テーブル orderedproductsordersproducts および users を選択して、「OK」をクリックします。

mf_join_multiple1

5.ジョインコンポーネントをマッピングに追加し、4つの nodes/rows アイテムを 「入力の追加」 ( gui_add_function_parameter ) ボタンをクリックして作成します。
6.データベースからの4つのテーブルをジョインコンポーネントの対応する入力アイテムに接続します。

mf_join_multiple2

メモ:別のシナリオでは、 全てのジョインされたテーブルが同じ「ルート」テーブルの下でネストされるようにジョインコンポーネントにテーブル orderedproducts を接続することができ、また、(同じレベルではなく、下のレベルに存在する)テーブル orders  などを接続することができます。以下も参照してください: データベースリレーションシップの扱い。 マッピングの結果は、テーブルをジョインした結果と同じになります。差異は、このサンプルでは、ジョインの条件が手動で作成されなければならず、下に示されるように、別のシナリオでは、ジョインの条件が MapForce により自動的に作成されます。ジョインの条件を手動で定義せずにテーブルをジョインするサンプルは、次を参照してください: サンプル :  SQL モード内でテーブルをジョインする。 同じ「ルート」テーブルの下でジョインされたテーブルの他のマッピングは、以下のパスで検索することができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\DB_Denormalize.mfd

 

2つ以上の構造 (または データベース テーブル) がジョインされる場合、ジョインコンポーネント上に表示される順番は重要です。このサンプルではテーブルは、次の順番のジョインコンポーネントに接続されています:

 

1.orderedproducts
2.orders
3.products
4.users

 

この順序は、「ジョインの条件の定義」 ( mf_ic_join_key ) ボタンをクリックした時に、どのように対応する構造が「ジョインの条件の定義」ダイアログボックス上で表示されるかに影響を及ぼします。すなわち、 最初のテーブル (orderedproducts) はデフォルトで構造 1の下に表示され、そのすぐ後のテーブル(orders) は、構造 2の下に表示されます。

mf_join_multiple3

 

最初のジョインの条件を定義するには、左側のペイン内の order_id アイテムをクリックし、右側のペイン内の id アイテムをクリックします。orderedproducts.order_idorders.id. が組み合わされます:

mf_join_multiple4

 

この時点まででは、2つのテーブルがジョインされました。 3番目のテーブルを含むジョインの条件を定義するには、右側のペインの上で使用することのできるドロップダウンリストから希望するテーブルを選択します。左側のペインは、この場合、ジョインコンポーネント上でジョインの前に発生する全てのテーブルが表示されています。例えば、(これらのテーブルは、 ジョインコンポーネント上で products の前に発生するため) products を右側で選択すると、左側は、 orderedproductsorders を表示します。テーブル products のフィールドを前のテーブルとジョインすることができます (この場合、 orderedproducts.product_idproducts.id)。

mf_join_multiple5

 

4番目のテーブル (users) をジョインするには、 users テーブルをドロップダウンリストから選択します。フィールド orders.user_idusers.id を組み合わせることができます。

mf_join_multiple6

 

必要とされるジョインの条件がすべて定義されると、ジョインコンポーネントのアイテムをターゲットコンポーネントにマップすることができます。マッピングを完了するには、  CSV コンポーネントを追加し、ジョインコンポーネントからのアイテムを下に示されるようにターゲット CSV コンポーネントに接続します (次を参照してください: CSV とテキストファイル) :

mf_join_multiple7

 

上で説明されているマッピングは、ジョインに含まれる4つのテーブルからコンパイルされた(CSV フォーマット の) レポートを作成します:

 

注文の ID  (orderedproducts テーブルから取得)
注文されたアイテムの個数 ( orderedproducts テーブルから取得)
注文の時刻 ( orders テーブルから取得)
注文された製品の名前 ( products テーブルから取得)
製品を注文したユーザーの氏名 ( users テーブルから取得)

(C) 2019 Altova GmbH