[JOIN_FIND](複数クラスの結合検索)
複数のオブジェクトクラスを結合して検索します。
形式
-
アソシエーションクラスを使用した結合
[JOIN_FIND] [JOIN] joinassoc;アソシエーションクラス名; joinfrom;オブジェクトクラス名,もう一方のオブジェクトクラス名; jointype;(OUTER|INNER) ([FIND_DATA]) 検索条件式 [GET_VALUE] 変数への代入文 ([ORDER_ASC]または[ORDER_DESC]) 検索結果をソートするためのキー ([DUPLICATE]※)
-
任意のプロパティをキーにした結合
[JOIN_FIND] [JOIN] joinfrom;オブジェクトクラス名,もう一方のオブジェクトクラス名; jointype;(OUTER|INNER); joinkey;結合キーとなるクラスのプロパティ名 ([FIND_DATA]) 検索条件式 [GET_VALUE] 変数への代入文 ([ORDER_ASC]または[ORDER_DESC]) 検索結果をソートするためのキー ([DUPLICATE]※)
- 注※
-
[DUPLICATE]タグは、検索結果ですべてのプロパティが同一の場合、2つ目以降の結果は出力しない場合に指定します。
指定する値
-
結合情報
アソシエーションクラスを使用するか、または任意のキーとなるプロパティを使用して、結合するクラスを記述します。
-
検索条件式
検索条件式を記述します。複数の検索条件を記述する場合は、演算子で結合します。検索条件式に使用できる演算子については、「2.2.4 演算子」を参照してください。
なお、検索条件式を使用しない場合は、対応する[FIND_DATA]タグを省略できます。
-
変数への代入文
検索したクラスのプロパティ情報を、変数へ代入するための代入文を記述します。
コードテーブルで定義したプロパティを取得する際には、コードテーブルの値または表示名を取得できます。表示名を取得する場合は、代入文のクラス.プロパティに「@(単価記号)」を付けてください。
-
検索結果をソートするためのキー
検索結果をソートする場合は、ソートするためのキーをクラス.プロパティの形式で指定します。[ORDER_ASC]タグは昇順、[ORDER_DESC]タグは降順にソートします。省略した場合、[GET_VALUE]タグで指定したプロパティの昇順になります。
終了状態
処理の終了状態とその内容を次に示します。
終了状態 |
内容 |
---|---|
NORMAL |
正常終了 |
NODATA |
検索条件を満たすデータがない |
ERROR |
− |
MULTI |
− |
記述例
複数クラスを検索する記述例を次に示します。
- 例1
-
資産情報、インストールソフトウェア情報、インストールソフトウェアリストを結合し、資産番号「1000」のインストールソフトウェア情報の一覧を出力する場合の記述例を次に示します。
[ASSET_ITEM_LOOP] [JOIN_FIND] [JOIN] joinassoc;InstalledLink; joinfrom;AssetInfo,InstalledInfo; jointype;INNER; [JOIN] joinassoc;InstalledListLink; joinfrom;InstalledInfo,InstalledList; jointype;INNER; [FIND_DATA] (AssetInfo.AssetNo = '1000') [GET_VALUE] INSTALLNAME = InstalledList.InstalledName VERSION = InstalledList.InstalledVersion PERMIT = InstalledList.InstalledPermit@ [SET_VALUE] MSG = INSTALLNAME+'['+VERSION+'] ('+PERMIT+')' $ECHO(MSG) [SET_VALUE] $SETSTATUS('NORMAL') [ASSET_ITEM_LOOP_END]
- 実行結果
-
SoftwareA[0100] (許可する)
SoftwareA[0101] (許可する)
SoftwareB[0000] (許可する)
SoftwareC[0000] (許可しない)
- 例2
-
資産情報と部署情報を結合し、資産ID「10000」の部署名を出力する場合の記述例を次に示します。この例では、外部結合([OUTER])しているので、部署IDが設定されていない場合は「" "」が出力されます。
[JOIN_FIND] [JOIN] joinfrom;AssetInfo,GroupInfo; jointype;OUTER; joinkey;AssetInfo.GroupID,GroupInfo.GroupID; [FIND_DATA] (AssetInfo.AssetID = '10000') [GET_VALUE] GROUP_NAME = GroupInfo.FullPathName [SET_VALUE] STATUS = $GETSTATUS() [IF] STATUS = NORMAL [THEN] [SET_VALUE] MSG = 'GROUP =' +GROUP_NAME $ECHO(MSG) [ELSE] [SET_VALUE] MSG = 'JOIN (' +STATUS+ ')' $ECHO(MSG) [IF_END]
- 実行結果
-
GROUP = 本社/営業部/営業1課