ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
ORDER BY ATTRIBUTE
|
ORDER BY ATTRIBUTE ( {aTable ;} objectField ; attributePath ; > or < {; objectField2 ; attributePath2 ; > or <2 ; ... ; objectFieldN ; attributePathN ; > or <N} {; *} ) | ||||||||
引数 | 型 | 説明 | ||||||
aTable | テーブル |
![]() |
セレクションをソートするテーブル (省略時はデフォルトテーブル) | |||||
objectField | Object Field |
![]() |
ソートの基準とする属性を含むオブジェクトフィールド | |||||
attributePath | 文字 |
![]() |
ソートの基準とする属性の名前またはパス | |||||
> or < | 演算子 |
![]() |
ソート方向: >: 昇順, または <: 降順 | |||||
* | 演算子 |
![]() |
ソート継続フラグ | |||||
ORDER BY ATTRIBUTE コマンドは、カレントプロセスにおいて aTable のカレントレコードセレクションを objectField の attributePath を基準にソートします。ソートが終了すると、セレクションの先頭レコードがカレントレコードとなります。
注: オブジェクトフィールドについての詳細な情報は、デザインリファレンス マニュアルの を参照して下さい。
aTable を省略した場合、コマンドはデフォルトテーブルに適用されます (デフォルトテーブルが事前に設定されていれば)。デフォルトテーブルが設定されていない場合、4Dは引数として渡された最初のフィールドのテーブルを使用します。
objectField には、ソートの基準としたい属性のオブジェクトフィールドを渡します。そのオブジェクトフィールドが aTable で指定したテーブルに自動または手動でリレートしている1テーブルに属する場合、objectField には他のテーブルに属するフィールドを指定することもできます。この場合、ソートは常にシーケンシャルに行われます。
attributePath にはソートの基準に使用したい属性の名前またはパスを渡します (例: "children.girls.age")。
注:
ソート基準として指定したフィールド属性に格納されている値が複数のデータ型 (数値、文字列、ブール等) に渡る場合、これらは型、次に値の順にグループされます。
いくつかのレコードについて最初のフィールド属性が null値の場合 (つまり、属性値が null、あるいはフィールドにおいて attributePath が存在しない場合):
セレクションのソートは一つ以上のレベルで行うことができます。各ソートレベルについて、aField、attributePath、 そして > or < を指定します。ソート方向に ">" 記号をしてすると昇順ソートになります。"<" 記号は降順ソートを表します。ソート方向を指定しなかった場合には、デフォルトで昇順ソートが行われます。
ソートフィールドを一つだけ指定して単一レベルのソートを行った場合、そのフィールドがインデックスされていれば、これがソートに利用されます。フィールドがインデックスされていない場合や、複数レベルのソートを行う場合には、ソートはシーケンシャルに行われます。
複数のフィールドを指定して複数レベルのソートを行う場合、* ソート継続フラグを指定することで ORDER BY ATTRIBUTE を必要なだけ呼び出して連結することができます。ソート継続フラグを付けない ORDER BY ATTRIBUTE の呼び出しによって連結の終端が明示され、ソート処理が開始します。この機能はカスタマイズされたユーザーインターフェースにおいて複数レベルのソートを扱うのに便利です。ORDER BY ATTRIBUTE は ORDER BY と組み合わせて呼び出すことができます。
注: このシンタックスを使用した場合には、ORDER BY ATTRIBUTE の呼び出し毎に一つのソートレベルのみ指定することができます。
ソートの定義方法に関係なく、実際のソート処理に時間がかかる場合は、4Dは自動的にサーモメータで進捗状況のメッセージを表示します。[#cmd id="181"/] コマンドと MESSAGES OFF コマンドを使用して、このメッセージを表示または非表示にすることができます。進捗サーモメータが表示された場合、ユーザーは中止ボタンをクリックしてソートを中止することができます。ソートが正常に終了すると、システム変数OKには1がセットされ、それ以外の場合には0がセットされます。
カレントセレクションを年齢 (age; 降順 )、次に名前 (name; 昇順) でソートします。元の順番は次の通りです:
// [Customer]OB_Info の中身を部分的に出力 { "LastName" : "Giorgio" , "age" :33, "client" : true }, { "LastName" : "Sarah" , "age" :42, "client" : true }, { "LastName" : "Mikken" , "age" : "Forty-six" , "client" : true }, { "LastName" : "Wesson" , "age" :44, "client" : true }, { "LastName" : "Johnson" , "age" :44, "client" : false }, { "LastName" : "Hamp" , "age" : "Sixty" , "client" : true }, { "LastName" : "Smeldorf" , "age" :33, "client" : true }, { "LastName" : "Martin" , "client" : true ], { "LastName" : "Evan" , "age" :36, "client" : true }, { "LastName" : "Collins" , "age" :33, "client" : true , "Sex" : "female" }, { "LastName" : "Garbando" , "age" :60, "client" : false , "Sex" : "male" }, { "LastName" : "Smeldorf" , "age" :54, "client" : true }, { "LastName" : "Smith" , "age" :42, "client" : true }, { "LastName" : "Jones" , "age" :52, "client" : true }, { "LastName" : "Kerrey" , "age" :44, "client" : true }, { "LastName" : "Gordini" , "client" : true }, { "LastName" : "Delaferme" , "age" :54, "client" : true }, { "LastName" : "Belami" , "age" : "Forty-six" , "client" : true }, { "LastName" : "Smeldorf" , "age" :22, "client" : true }, { "LastName" : "Smeldorf" , "age" :70, "client" : true } |
次のコードを実行すると:
ORDER BY ATTRIBUTE([Customer];[Customer]OB_Info;"age";<;[Customer]OB_Info;"LastName";>)
レコードは次の順番にソートされます:
{ "LastName" : "Smeldorf" , "age" :70, "client" : true } { "LastName" : "Garbando" , "age" :60, "client" : false , "Sex" : "male" }, { "LastName" : "Delaferme" , "age" :54, "client" : true }, { "LastName" : "Smeldorf" , "age" :54, "client" : true }, { "LastName" : "Jones" , "age" :52, "client" : true }, { "LastName" : "Johnson" , "age" :44, "client" : false }, { "LastName" : "Kerrey" , "age" :44, "client" : true }, { "LastName" : "Wesson" , "age" :44, "client" : true }, { "LastName" : "Sarah" , "age" :42, "client" : true }, { "LastName" : "Smith" , "age" :42, "client" : true }, { "LastName" : "Evan" , "age" :36, "client" : true }, { "LastName" : "Collins" , "age" :33, "client" : true , "Sex" : "female" }, { "LastName" : "Giorgio" , "age" :33, "client" : true }, { "LastName" : "Smeldorf" , "age" :33, "client" : true }, { "LastName" : "Smeldorf" , "age" :22, "client" : true }, { "LastName" : "Hamp" , "age" : "Sixty" , "client" : true }, // age に文字列が使用されているため { "LastName" : "Belami" , "age" : "Forty-six" , "client" : true }, // 異なる括りでソートされます { "LastName" : "Mikken" , "age" : "Forty-six" , "client" : true } { "LastName" : "Gordini" , "client" : true }, // age が null値 (存在しない) のため { "LastName" : "Martin" , "client" : true } // 終わりにソートされます |
プロダクト: 4D
テーマ: クエリ
番号:
1407
初出: 4D v16 R2
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)