• 締切済み

ACCESSの並び替え

ACCESSのクエリでこんな並び替えはどのようにすれば 可能でしょうか? 階層 自ID 親ID ソート順 1 1 - 1 2 2 1 1 2 3 1 2 2 4 1 3 3 5 2 1 3 6 2 2 3 7 2 3 3 8 3 1 3 9 3 2 3 10 3 3 3 11 4 1 3 11 4 2 3 11 4 3 上記テーブルの 階層はツリー上の階層をあらわしています。 自IDは、自分のIDです。 親IDは、ひとつ上の階層のどのIDに紐付くかをあらわします。 ソート順は、同じ親IDを持つレコード内でのソート順です。 これを、まずは、 (1) 階層1の自ID1 (2) (1)に紐付く階層2のソート順1 (3) (2)に紐付く階層3のソート順1 (4) (3)に紐付くIDが存在しないので、(2)に紐付く階層3のソート順2 (5) (4)に紐付くIDが存在しないので、(2)に紐付く階層3のソート順3 (6) (5)に紐付くID無し、(2)に紐付くID無しなので、(1)に紐付く階層2のソート順2 (7) (6)に紐付く階層3のソート順1 ・・・・・ と言った感じで、下記のように並べ替えたいと思っています。 階層 自ID 親ID ソート順 1 1 - 1 2 2 1 1 3 5 2 1 3 6 2 2 3 7 2 3 2 3 1 2 3 8 3 1 3 9 3 2 3 10 3 3 2 4 1 3 3 11 4 1 3 11 4 2 3 11 4 3 実際には、階層が8まであり、ソート順も最大で30前後存在します。 どなたかご教授いただけると助かります。

みんなの回答

  • 5qoo
  • ベストアンサー率48% (20/41)
回答No.1

<並替用テーブル> 並替No 階層 自ID 親ID ソート順 001 1 1 - 1 002 2 2 1 1 003 3 5 2 1 004 3 6 2 2 005 3 7 2 3 006 2 3 1 2 007 3 8 3 1 008 3 9 3 2 009 3 10 3 3 010 2 4 1 3 011 3 11 4 1 012 3 11 4 2 013 3 11 4 3 このように別テーブルで管理して「並替No」のみ必要なテーブルに格納してはダメなのですか? もしくは、並び替えの時だけこのテーブルをリンクさせて「並替No」を呼び出すとか。 このようなデータには限りがあるのか、それとも無制限にでるかにより考え方も変わりますが、並び替えには絶対のルールがあると思うので可能な範囲で工夫していくしかないのではないでしょうか。

hkhkhk
質問者

お礼

ご回答いただきありがとうございます。 並べ替えNoを振るためには、並べ替えた後の状態が必要だと思いますが、現状は、上の並べ替える前の状態のテーブルしか存在せず、それを下の状態に並べ替えたいのです。 別の列を追加すること、別のテーブルを作成することには、何も制限がありませんが、そもそもが、並べ替えのときに、色々な条件を入れ子にしていく方法がわからないのです。

関連するQ&A

専門家に質問してみよう