DISTINCT VALUES

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11 (Modified)


DISTINCT VALUES (aField; array)

引数説明
aFieldフィールドデータとして使用する、インデックス可能なフィールド
array配列フィールドデータを受け取る配列

説明

DISTINCT VALUESコマンドは、aFieldが属するテーブルのカレントセレクションのaFieldフィールドから、重複しない(ユニークな)値で構成されるarray配列を作成します。

DISTINCT VALUESコマンドには、インデックスが可能な (インデックスをサポートするタイプの) フィールドを渡すことができます。実際にインデックスされている必要はありません。

しかし、インデックス付けされていないフィールドでこのコマンドを実行すると遅くなります。また、この場合、コマンドはカレントレコードを失うことに注意してください。

DISTINCT VALUES はカレントセレクションのレコードをブラウズし、重複しない値を保持します。

Note: トランザクション中にDISTINCT VALUESコマンドが呼び出された場合、トランザクション中に作成されたレコードも処理の対象となります。

DISTINCT VALUESを呼び出す前に配列を作成した場合、このコマンドは、その配列タイプがフィールドタイプと互換であることを期待します。そうでない場合、インタプリタモードでは、DISTINCT VALUESは適切なタイプの配列を作成します。フィールドが時間型ならば、このコマンドは倍長整数の配列を期待または作成します。

コマンドの呼び出し後、配列のサイズはセレクション中の重複しない値の数と同じです。array中の要素は昇順でソートされて返されます。これが目的の並べ替え順であれば、DISTINCT VALUESを使用した後にSORT ARRAYコマンドを呼び出す必要はありません。

aFieldがインデックスされている場合、このコマンドは、カレントセレクションおよびカレントレコードを変更しません。DISTINCT VALUESコマンドはフィールドのインデックスを使用します。

Note: DISTINCT VALUESをキーワードインデックスが適用されたテキストフィールドに対して実行すると、コマンドはインデックスのキーワードで構成される配列を作成します。他のタイプのデータと異なり、返される値はインデックスの存在により異なります。フィールドに標準のインデックスが設定されていても、常にキーワードインデックスが考慮されます。

警告: DISTINCT VALUESコマンドは、セレクション及びそこに含まれる重複しない値の数によって非常に大きな配列を作成する場合があります。配列はメモリ上に存在します。そのためコマンドの実行後、結果をテストするのは良いことです。これを行うには、作成された配列のサイズをテストするか、ON ERR CALLプロジェクトメソッドを使用してコマンドの呼び出しをカバーします。

4D Server: このコマンドは4D Server用に最適化されています。サーバ側で配列の作成と値の計算が行われ、その後全体がクライアントに送られます。

例題

以下の例は、カレントセレクションから都市のリストを作成します。そして、会社の店舗がある都市の数を求めます:

   ALL RECORDS([Retail Outlets]) ` レコードのセレクションを作成
   DISTINCT VALUES([Retail Outlets]City;asCities) 
   ALERT("会社は" +String(Size of array(asCities))+"都市に店舗を持ちます。")

参照

ON ERR CALL, SELECTION RANGE TO ARRAY, SELECTION TO ARRAY.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次