ユーザーガイド > ビューとテーブルリソース > ビューとテーブルのリソースの設計 > [Grid(グリッド)]パネルでのビューの設計
 
[Grid(グリッド)]パネルでのビューの設計
次のセクションで、[Grid(グリッド)]パネルのタスクについて説明します。[Model(モデル)]パネル使用して追加したテーブルから引いて、[Grid(グリッド)]パネルを使用して、追加する列を選択します。
テーブルからのすべての列の一覧表示
個々の列の追加
列を追加した後、[Grid(グリッド)]パネルを使用して、列の定義、並べ替え順序などの属性を調整できます。
列のエイリアスの作成
CAST関数を使用した列データ型の変更
ORDER BY句に列を含める
GROUP BY句の指定
列の基準の指定
SELECTまたはWHERE句に関数を含める
SELECTステートメントで変数を宣言する
テーブルからのすべての列の一覧表示
[Grid(グリッド)]パネルで、テーブルのすべての列を一覧表示できます。これらのテーブルが、SQL SELECTステートメントに追加されています。[Columns(列)]パネルを使用して定義を修正できます。
[Grid(グリッド)]パネルでテーブルのすべての列を行として追加するには
1.[List Columns(列のリスト)]ボタンをクリックします。
[List Columns from Tables(テーブルの列のリスト)]ダイアログボックスが開き、使用可能なテーブルを示すフィールドが左側、選択したテーブルを示すフィールドが右側に表示されます。
2.次の2つの方法のいずれかで、テーブルを右側に移動できます。
両方向矢印ボタンをクリックして、使用可能なすべてのテーブルを右側に移動します。
使用可能なテーブルを1つ選択(複数選択する場合はCtrlキーまたはShiftキーを使用)し、右矢印ボタンをクリックして、選択したテーブルを右側に移動します。
テーブルを選択して左矢印ボタンをクリックすると、テーブルを左側に戻すことができます。
3.必要に応じて、[Grid(グリッド)]パネルにすでに表示されている場合でも、テーブルからすべての列を追加する場合は、[Skip Duplicate Columns(重複列をスキップする)]チェックボックスをオフにします。
4.[OK]をクリックします。
選択したテーブルの列が[Grid(グリッド)]パネルのリストの最後に追加されます。テーブルが同じか異なるかに関係なく、ビューエディターにより、同一の列名のエイリアスが自動的に作成されます。[Grid(グリッド)]パネルでエイリアスを選択し、列に新しいエイリアスを入力できます。
5.[SQL]パネルを選択し、SELECTステートメントに、要求したすべての列が含まれていることを確認します。
個々の列の追加
テーブルから個々の列を追加し、それを[Grid(グリッド)]パネルの目的の位置に移動できます。
[Grid(グリッド)]パネルで個々の列を行として追加するには
1.[Grid(グリッド)]タブをクリックして、[Grid(グリッド)]パネルを開きます。
2.左側の列([Column(列)]列)の空のセルをクリックします。
3.セルが境界線のあるフィールドになったら、その右側のドロップダウンボタンをクリックして、リストからテーブル列を選択します。
リストには、モデル内のすべてのテーブルのすべての列が含まれます。
4.必要に応じて、[Output(出力)]列のチェックボックスをオフにして、ビューの実行結果から項目を除外します。
注意: [Grid Output(グリッド出力)]列のすべてのチェックボックスを一度にオンまたはオフにするには、[Select All Outputs(すべての出力の選択)]または[Clear All Outputs(すべての出力のクリア)]ツールバーアイコンをそれぞれ使用します。
列のエイリアスの作成
ユーザーが作成したTDVデータサービスを参照またはクエリーするときに表示される列名であるエイリアスを指定できます。ユーザーにとって意味のあるエイリアスを割り当てることをお勧めします。
注意: 予約語をエイリアスとして指定する場合、SQLステートメント内で二重引用符で囲みます。予約語のリストについては、『TDVリファレンスガイド』を参照してください。
[Grid(グリッド)]パネルで列にエイリアスを割り当てるには
1.[Alias(エイリアス)]の下で、エイリアスを指定する列項目に対応するセルをクリックします。
エイリアスは、エディターによって自動的に割り当てられている場合があります。それをハイライトして、新しいエイリアスを入力して置き換えることができます。
2.セルにこの列のエイリアスを入力します。
注意: 一部のODBCクライアント(Excelなど)から自動生成されたSQLは、エイリアスを使用してデータソースをクエリーする場合、変更する必要があります。
CAST関数を使用した列データ型の変更
データ型の変更が必要になる場合があります。これは、そのデータ型をサポートしていないクライアントインターフェイスを介してビューを使用する必要がある場合や、データソースで定義されているデータ型が現在のニーズに最適でない場合があるためです。
SELECTステートメントで変数を宣言するには
1.任意のビューを開きます。
2.[Grid(グリッド)]タブを選択します。
3.データのある行を選択します。
4.[Functions(関数)] > [Convert(変換)] > [CAST]を右クリックして選択します。
5.[OK]をクリックします。
ORDER BY句に列を含める
[Grid(グリッド)]パネルで、SQLステートメントにORDER BY句を追加して、結果を1つ以上の列で昇順または降順で並べ替えることができます。
注意: 並べ替えの種類を選択する前に並べ替え順を選択した場合、使用可能な[Sort Type(並べ替えの種類)]オプションは[Unsorted(並べ替えなし)]のみです。
TDVビューではOFFSETとFETCHを使用しないでください。
ORDER BY句に列を含めるには
1.行の[Sort Order(並べ替え順序)]列のセルをクリックし、その列を並べ替える順序を示す番号を選択します(1番目に1、2番目に2など)。
注意: 指定する行を増やすと、並べ替え順序に使用できる番号を増やすことができます。同じ番号を複数回指定した場合、他の行には、エディターによって個別の並べ替え順序番号が割り当てられます。希望どおりに順序が割り当てられていることを確認します。
2.行の[Sort Type(並べ替えの種類)]列のセルをクリックし、[Ascending(昇順)]、[Descending(降順)]、または[Unsorted(並べ替えなし)]を選択します。
注意: ORDER BY句から行を削除する場合は、[Sort By(並べ替え基準)]列で[Unsorted(並べ替えなし)]を選択します。
3.[SQL]タブをクリックして、結果のORDER BY句を確認します。
GROUP BY句の指定
[Grid(グリッド)]パネルで、集計関数に関連する項目、式、または制限でグループ化できます。
GROUP BY句を指定するには
1.項目でグループ化するには、項目の行が[Group By(グループ化基準)]列と交差するセルをクリックし、ドロップダウンリストから次のオプションのいずれかを選択します。
[None(なし)]—GROUP BY句を省略します。
[Group By(グループ化基準)]—この行の項目でグループ化する句を追加します。
[Expression(EXPRESSION)]—式でグループ化します。
[Having(HAVING)]—GROUP BY句から返される行に制限(集計関数を含む)を設定します。
列の基準の指定
OR論理を使用して1行に複数の基準を組み合わせることができます。異なる行(垂直)に入力した基準をAND論理を使用して結合します。基準を関連付けるために、列を結果セットに含める必要はありません。
たとえば、Orderテーブルのtotal_price列で、大口注文と小口注文を取得したい場合は、[Criteria(基準)]列に「>100」、最初の[OR]列に「<10」を入力します。
列の基準を指定するには
1.項目の基準を指定するには、項目の行が[Criteria(基準)]列と交差するセルをクリックし、セルに最初の基準を入力します。
2.項目にさらに基準を指定するには(合計4つまで)、項目の行が[OR]列と交差するセルをクリックし、セルに基準を入力します。
SELECTまたはWHERE句に関数を含める
項目の行に対する[Column(列)]列のセルを使用して、SELECTステートメントに含める関数を指定できます。項目の行に対する[Criteria(基準)]列のセルを使用して、SQLステートメントのWHERE句に含める関数を指定できます。使用可能な関数は、『TDVリファレンスガイド』の「SQL関数のTDVサポート」に列挙されています。
注意: 追加できる関数には、カスタム関数が含まれます。管理者がプロシージャをプロモートして、関数のドロップダウンリストに表示されるようにする方法については、「プロシージャをカスタム関数にプロモートする」を参照してください。
SELECTステートメントに関数を含めるには
1.[Column(列)]セクション内のセルを右クリックし、[Functions(関数)] > <関数の種類> > <関数名>を選択します。
2.関数の入力引数を指定して、[OK]をクリックします。
関数形式は、[Function Arguments Input(関数の引数入力)]ウィンドウに提供されます。関数をこのように追加すると、SELECTステートメントに挿入されます。
WHERE句に関数を含めるには
1.[Criteria(基準)]セクション内のセルを右クリックし、[Functions(関数)] > <関数の種類> > <関数名>を選択します。
2.関数の入力引数を指定して、[OK]をクリックします。
関数形式は、[Function Arguments Input(関数の引数入力)]ウィンドウに提供されます。関数をこのように追加すると、WHERE句に挿入されます。
SELECTステートメントで変数を宣言する
次の手順を使用して定義された変数は「仮想列」と見なされ、SELECTステートメントに含まれます。仮想列を使用して、ビューとプロシージャを統合できます。
通常、仮想列は次の方法で実装します。
フィルター基準内に値の範囲として
プロシージャの呼び出しに使用できるように単一の値として
注意: XMLタイプが許可されます。XMLスキーマを指定する場合は、ビューのSQLを直接編集する必要があり、列の宣言には、その値のXMLスキーマ定義を含める必要があります。手順に従うXMLの例を参照してください。
SELECTステートメントで変数を宣言するには
1.[Column(列)]セルを右クリックし、[Declaration(宣言)]を選択します。
2.[Add Declaration(宣言の追加)]ウィンドウの[Parameter Name(パラメーター名)]フィールドに、変数の一意の名前を指定します。
3.ドロップダウンリストで変数の種類を指定します。
4.[Default Value(デフォルト値)]フィールドに、変数のデフォルト値を指定します。
5.[OK]をクリックします。
定義した値が、[Column(列)]セルに次の形式で表示されるはずです。
{DECLARE <variable_column_name><data_type> DEFAULT <default_value>}
 
XML仮想列の宣言を変更する方法の例
XMLスキーマを指定するには、ビューのSQLを直接編集する必要があり、列の宣言には、その値に関連するXMLスキーマ定義の部分を含める必要があります。ビューのSQLを直接編集すると、SQLモデルを編集できなくなります。以下に、単一の仮想列に関連付けられたXMLスキーマ定義を示します。
{DECLARE Request_decl
XML('{http://www.compositesw.com/example/transaction/orders/v1.0}Request', '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.compositesw.com/example/transaction/request/v1.0" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.compositesw.com/example/transaction/request/v1.0"> <xs:element name="Request">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ReqId" nillable="true" type="xs:int"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>') DEFAULT NULL
}
{DECLARE inputXML_decl XML DEFAULT null} inputXML,
...
 
プロシージャを使用する例
この例では、2つのビューと、製品とともに配布されるプロシージャを使用しています。
requires_prod_idビュー
-- This view requires that a single product ID to be specified, so it can be used to join with
-- a lookup procedure.
SELECT
a.ProductID,
{ DECLARE a_prod_id INTEGER } a_prod_id,
a.ProductName,
b.ProductDescription
FROM
/shared/examples/ds_inventory/tutorial/products a INNER JOIN
/shared/examples/LookupProduct(a_prod_id) b
ON a.ProductID = a_prod_id
 
wrap_prod_idビュー
SELECT
ProductID,
a_prod_id,
ProductName,
ProductDescription
FROM
/shared/DEMO/VirtualColumn/for_procedures/requires_prod_id
WHERE
a_prod_id = 10
 
値の範囲を使用する例
この例では、2つのビューと1つのプロシージャを使用しています。
proc_wrap_prod_idプロシージャ
PROCEDURE proc_wrap_prod_id(
IN prod_id_begin INTEGER,
IN prod_id_end INTEGER,
OUT result CURSOR (
OrderID INTEGER,
ProductID INTEGER,
Discount NUMERIC(12,2),
OrderDate DATE,
CompanyName VARCHAR(50),
CustomerContactFirstName VARCHAR(30),
CustomerContactLastName VARCHAR(50),
CustomerContactPhone VARCHAR(30)
)
)
BEGIN
OPEN result FOR
SELECT
OrderID,
ProductID,
Discount,
OrderDate,
CompanyName,
CustomerContactFirstName,
CustomerContactLastName,
CustomerContactPhone
FROM
/shared/examples/ViewOrder ViewOrder
WHERE
(ProductID >= prod_id_begin)
and (ProductID <= prod_id_end)
;
 
END
 
requires_prod_idビュー
SELECT
products.ProductID,
{ DECLARE prod_id_begin INTEGER } prod_id_begin,
{ DECLARE prod_id_end INTEGER } prod_id_end,
products.ProductName
FROM /shared/examples/ds_inventory/tutorial/products products
WHERE
(ProductID >= prod_id_begin)
and (ProductID <= prod_id_end)
 
view_wrap_prod_idビュー
SELECT
ProductID,
ProductName
FROM
/shared/DEMO/VirtualColumn/range_of_values/requires_prod_id
where
prod_id_begin = 5
and prod_id_end = 15