ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
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 v20 R7)