概要
この記事では、TDV Studioを使ってグラフィカルにテーブルの結合を行う手順や結合のオプション設定を行う方法について説明します。
本記事で作成するビューについて
「共有」フォルダ内にある"examples"フォルダの"ds_inventory"->"tutorial"から、次の2テーブルを結合したビューを作成します。
- categories
- products
結合手順
適当なフォルダを右クリックし、「新規」->「新しいビュー」をクリックします。
ビューの名前は"product_categories"とします。
「モデル」タブを開いた状態で、結合元のテーブル2点を青いキャンバスへドラッグアンドドロップします。
結合のキーとなるカラム同士を紐づけ、結合を行います。
今回の例では、左側"categories"の"categoryid"から、右側"products"の"categoryid"に向けてドラッグアンドドロップします。これにより、両者の間に直線が表示されます。
両テーブル間に同名のカラムが含まれている場合はエラーとなり、ビューを実行できない状態となっています。出力するビューは「グリッド」タブから選択します。
「グリッド」タブを開き、上部にある「列のリスト」ボタンをクリックします。
「グリッド」タブ内の表にリストアップするカラムを選択します。ここでは"categories"と"products"の両者を「これらのテーブルの列をリスト」の欄に移動させ、「OK」をクリックします。
"categoryid"が両者のテーブルに存在しているため、一方を非表示とします。今回の例では、"products"のカラム"products.categoryid"を選択し、「出力」タブのチェックを外すことで設定できます。
ここまで設定後、ビューを保存します。
「SQL」タブを開くと、「モデル」「グリッド」タブで設定した内容がクエリとして反映されていることが確認できます。
SELECT
categories.categoryid,
categories.categoryname,
products.productid,
products.productname,
products.productdescription,
products.serialnumber,
products.unitprice,
products.reorderlevel,
products.leadtime
FROM
/shared/examples/ds_inventory/tutorial/categories categories INNER JOIN
/shared/examples/ds_inventory/tutorial/products products
ON categories.categoryid = products.categoryid
他の種類の結合や条件を利用したい場合・・・
「モデル」タブから結合を実装した場合、デフォルトでは内部結合(INNER JOIN)となります。左外部結合など、他種類の結合を利用する場合の手順について説明します。
「モデル」タブを開き、結合部分の中央にある青い〇部分を右クリックし「プロパティ」を選択します。
こちらで結合条件や詳細を設定できます。
上部の「列」欄にて結合に利用するキーを指定します。また、テーブルの間にある「=」演算子をクリックすると、条件の変更を行うことができます(例:>=, <>)。
「行を含める」というセクション内では結合の種類を指定できます。結合の種類とチェック状態との対応は次の通りです。
- 内部結合(INNER JOIN) : 両者チェックなし
- 左外部結合(LEFT OUTER JOIN) : 「すべての行 - categories」にチェック
- 右外部結合(RIGHT OUTER JOIN) : 「すべての行 - products」にチェック
- 完全外部結合(FULL OUTER JOIN) : 両者にチェックを入れる
結合条件やチェックの状態に応じて、「SQL」タブの内容にも変更が反映されます。