テキストマネージャで問合せを定義するにはテキストマネージャを使用して問合せの選択基準を定義するには、以下の手順を使用します。問合せの基本プロパティを定義しておく必要があります。問合せの定義を参照してください。 テキストマネージャを使用して問合せの選択基準を定義するには、次の手順を実行します。 ステップ 1. テキストエディタを開始する データの問合せ (ttadv3580m000) セッションで、新規問合せを選択し、適切なメニューのテキストマネージャを選択します。テキストエディタが開始されます。 ステップ 2. 問合せのソースコードを入力するか、修正します。 ソースコードの構文は、標準 SQL に似ています。また、ディクショナリ (REFERS TO) の参照を使用することができます。これにより、データディクショナリに定義された参照を、関連付けられたフィールドとともに使用できます。 問合せの一般的な構造は次のとおりです。 SELECT <select リスト> FROM <from リスト> [ WHERE <where 条件> ] [ GROUP BY <group by リスト> [ HAVING <having 条件> ] ] [ ORDER BY <order by リスト> ] 例のステートメントは、大文字で表記されています。テキストエディタでは大文字および小文字の両方を使用することができます。 問合せ構文の詳細と例については、問合せの構造を参照してください。 注意 テーブルの表示 (ttadv3584m000) セッションを開始して、テーブルとテーブルフィールドのリストを表示できます。セッションを開始するには、以下のステップを実行します。
重要
以前に簡易 SQL を使用して定義した問合せを、テキストマネージャで修正できます。 問合せテキストで以下のいずれかを使用した場合は、簡易 SQL で問合せをメンテナンスできなくなります。
問合せの構造 SELECT <select リスト> には 1 つ以上のテーブルフィールドが含まれます。これらのフィールドを 1 行に置くことができますが、必ずカンマで区切ります。 繰返しフィールドの一部を選択する場合、このテーブルフィールドには括弧で囲んだ部分番号を後に付けなければなりません。繰返しフィールドでは関数は使用できません。
例 1 select ttadv421.cpac, ttadv421.cmod, ttadv421.flno, ttadv421.vers, ttadv421.rele, ttadv421.cust, ttadv421.indn, ttadv421.part(1), ttadv421.part(2), ttadv421.part(5) from ttadv421 またワイルドカード * も使用することができます (テキストマネージャのみ)。たとえば、select *、あるいは select ttadv421.* のように使用します。簡易 SQL に問合せをロードすると、ツールによりワイルドカードが個別フィールドに変換されます。 <select リスト> では、次の関数を使用することができます。
COUNT (フィールド) 関数は、選択した問合せのレコード数を出します。 SUM (フィールド) 関数は、選択した数値フィールドの値の合計を出します。 AVG (フィールド) 関数は、選択した数値フィールドの値の平均を出します。 MIN (フィールド) 関数および MAX (フィールド) 関数は、選択した数値フィールドの最小値および最大値をそれぞれ出します。 関数を使用する場合に、<select リスト> に関数以外のフィールドがあるときは、これらのフィールドを <group by> に置かなければなりません。簡易 SQL で関数を使用する場合は、ツールにより、その他の選択フィールドについて <group by> ステートメントが自動生成されます。 1 つのテーブルフィールド (繰り返しではない) で複数の関数を使用する場合は、テキストエディタを使用してこれらの関数をバインドする必要があります。このためには、関数の後にコロンとバインド変数を付けます。バインド変数は int0..int9 または float0..float9 の形式でなければなりません。int 変数は整数値としての関数の結果を表示し、float は浮動小数点数としての結果を表示します。したがって、この構文を数値フィールド以外で使用することはできません。
例 2 select ttaad220.user, min(ttaad220.comp):int0, max(ttaad220.comp):int1 from ttaad220 group by ttaad220.user この問合せは、権限を持つ会社の番号が最小および最大のユーザのリストを出力します。 差出人 <from リスト> には、ツールが問合せの対象とするテーブル名が必要です。テーブル名はカンマで区切らなければなりません。
例 3 select ttaad210.user, ttaad220.comp from ttaad220, ttaad210 where ttaad210.user = ttaad220.user and ttaad210.term = tty1" この問合せは、端末権限および会社権限を持ち、ポート tty1 から bshell を起動することを許可されたユーザのリストを、関連する会社番号とともに出力します。 WHERE 最後の例では、<where 条件> が使用されています。<where 条件> は 0 以上の部分式から構成される式です。部分式はテキストマネージャでのみ入力することができます。式は次のようなフォームになります。 <オペランド> <演算子> <オペランド> では、<オペランド> は次のいずれかです。
数値式および文字列式は、テキストマネージャを介してのみ使用することができます。 <演算子> は次のいずれかです。
簡易 SQL では式と式の間は AND のみ使用することができます。テキストマネージャでは OR も使用することができます。
例 4 select tttxt004.opwd from tttxt004 where tttxt004.tbox = tttxt.tbox.nmline and tttxt004.coln - tttxt004.scol <= 76
例 5 select ttadv230.desc, ttadv230.cpac, ttadv230.vers, ttadv230.rele, ttadv230.cust, ttadv230.cmod, ttadv230.cprs from ttadv230 where ttadv230.crdt > date(1993,1,26) and ttadv230.cpac & ttadv230.vers = tt6.1"
例 6 select ttaad110.dsca from ttaad110, ttadv300 where ttadv300.clan refers to ttaad110 and ttadv300.cpac = "tt" and ttadv300.cmod = "adv" and ttadv300.cfrm = "3100s000d"
例 7 select ttaad200.user from ttaad200 where ttaad200.name such as .*u.* 例 4 では、列挙フィールドおよび数値式が使用されています。例 5 では、日付フィールドおよび文字列式を利用しています。例 6 では、参照が使用されています。例 7 では、like 演算子を利用しています。like で使用される構文については、Infor ES Programmer's Guide で文字列正規表現の expr.compile 関数を参照してください。 結果として例 4 は、「列数 - 先頭列」 が 76 以下のボックスタイプラインを持つウィンドウタイプを生成します。 例 5 の出力は、パッケージコードおよびバージョンが tt6.1 で 1993 年 1 月 26 日以降に作成されたプログラムスクリプトの記述、パッケージコード、バージョン、リリース、カスタマイズ、モジュールコード、スクリプトコードなどから構成されます。 例 6 の出力は、ttadv3100m000d フォームにあるすべての言語の (記述の) 集合です。 例 7 は文字 u を含むすべての bshell ユーザの名前を生成します。
例 8 select tccom010.nama from tccom010 where tccom010.crep <> 0 and NOT tccom010.crep IN ( select tccom001.emno from tccom001 where tccom001.ccty = "USA" ) この問合せは、販売担当がアメリカ合衆国に住んでいない顧客を選択します。この問合せを次のように書き換えることができます。 select tccom010.nama from tccom010 where tccom010.crep IN ( select tccom001.emno from tccom001 where tccom001.ccty <> "USA" )
例 9 結合フィールドの値は中括弧で囲み、フィールドはカンマで区切ります。文字列値は引用符で囲みます。 select ttadv111.stat from ttadv111 where ttadv111.cmba = { "tt","6.1","a" }
例 10 select tccom020.suno, tccom020.nama from tccom020 where exists ( select * from timps053 where timps053.suno = tccom020.suno ) グループ分類 <group by リスト> を使用して <select リスト> からフィールドのグループを選択し、グループのレコード数 (count)、合計 (sum)、平均 (average)、最小値 (min)、または最大値 (max) を調べることができます。<group by リスト> を使用して、結果の重複を省くこともできます。
例 11 select sum(ttadv303.leng), ttadv303.cpac, ttadv303.cmod, ttadv303.clan from ttadv303 group by ttadv303.clan, ttadv303.cmod, ttadv303.cpac この例の出力は、パッケージ - モジュール - 言語の各グループの、フィールド ttadv303.leng (特殊な長さフィールド) の値の合計です。言い換えれば、それぞれのパッケージ、モジュール、言語の組合せについて合計が計算されます。 Having <having 条件> は、グループで選択するときに使用されます。要素は <select リスト> にあります。
例 12 select sum(ttadv303.leng), ttadv303.cpac, ttadv303.cmod, ttadv303.clan from ttadv303 where ttadv303.clan = "2" group by ttadv303.clan, ttadv303.cmod, ttadv303.cpac having sum(ttadv303.leng) < 1000 この例の出力は、パッケージ - モジュール - 言語の各グループのフォーム上の、特殊フィールドの長さの合計です。条件は言語が英語 (言語コード 2) でありフィールドの合計の長さが 1000 未満であることです。 並び順 問合せの出力をソートできます。<order by リスト> を使用して、各フィールドのソート順を指定できます。 2 とおりのソートができます。
例 13 select ttaad200.user from ttaad200 order by ttaad200.user desc この例では、降順 (z から a) の bshell ユーザのリストが生成されます。 count (フィールド) のような関数フィールドでソートすることもできます。フィールドは <select リスト> 内の連番によって置き換えられます。
例 14 select ttadv200.cpac, count(ttadv200.cses) from ttadv200 group by ttadv200.cpac order by 2 desc 繰返しフィールドの様々な部分を order by 句に置くことができますが、常に繰返しフィールド全体によってソートされる結果になります。したがって、繰返しフィールドの一部を order by 句に入れるだけで十分です。
| |||