REDUCE SELECTION

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

version 3


REDUCE SELECTION ({aTable; }number)

引数説明
aTableテーブルセレクションの数を減らすテーブル, または
省略時デフォルトテーブル
number数値選択するレコード数

説明

REDUCE SELECTIONは、aTableの新しいレコードセレクションを作成します。このコマンドはaTableのカレントセレクションの先頭からnumber個のレコードセレクションを返します。REDUCE SELECTIONは、カレントプロセスのaTableのカレントセレクションに適用されます。これはカレントプロセスのaTableのカレントセレクションを変更し、新しいセレクションの先頭レコードをカレントレコードにします。

Note: ステートメントREDUCE SELECTION(0)が実行されると、aTableのカレントセレクションおよびカレントレコードはなくなります。

例題

以下の例では最初に、20を超える国の販売店を対象にしたコンテストの正確な統計を検索します。国ごとに$50,000以上の製品売上を記録した上位3店と、全世界で上位100店に含まれる販売店に対し、賞が送られます。ほんの数行のコードで、この複雑な処理がインデックス検索を利用して実行されます:

   CREATE EMPTY SET([Dealers];"Winners")  ` 空のセットを作成 
   SCAN INDEX([Dealers]Sales amount;100;<)  ` インデックスの最後からスキャン 
   CREATE SET([Dealers];"100 best Dealers")  ` 選択されたレコードをセットに格納 
   For ($Country;1;Records in table([Countries]))  ` 国ごとに 
         ` この国の販売店を検索 
      QUERY([Dealers];[Dealers]Country=[Countries]Name;*)  ` ...$50,000以上売った販売店
      QUERY(&;[Dealers];[Dealers]Sales amount>=50000) 
      CREATE SET([Dealers];"WinnerDealers")  ` セットに格納
         ` 上位100位以内のセットに結合 
      INTERSECTION("WinnerDealers";"100 best Dealers";"WinnerDealers") 
      USE SET("WinnerDealers") ` 国ごとの上位成績者
         ` 降順で並び替え
      ORDER BY([Dealers];[Dealers]Sales amount;<) 
      REDUCE SELECTION([Dealers];3)  ` 3位までを選択
      CREATE SET([Dealers];"WinnerDealers")  ` その国の勝者 
      ` 全世界の勝者リストに加える 
      UNION("WinnerDealers";"TheWinners";"TheWinners") 
   End for 
   CLEAR SET("100 best Dealers")  ` このセットはもう必要ない 
   CLEAR SET("WinnerDealers")  ` このセットも必要ない
   USE SET("The Winners")  ` これが勝者
   CLEAR SET("The Winners")  ` このセットはもう必要ない
   OUTPUT FORM([Dealers];"Prize letter")  ` 印刷フォームを選択 
   PRINT SELECTION([Dealers]) ` 手紙を印刷

参照

ORDER BY, QUERY, SCAN INDEX, セット.


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