Mysqlでレコードの表示順を管理する方法で、各レコードに表示順を意味するカラムを作成して、それらが表示順に合わせて連番になるように管理する以上に、明快で効率的な表示順の管理方法があれば教えて下さい。お願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/11/23 09:38:57
  • 終了:2009/11/30 09:40:02

回答(1件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/11/23 10:14:23

ポイント60pt

MySQL単体でシステムを組むという事はないので、

表示順だけの問題であるならば、UI:ユーザーインターフェース側(phpなど)が、

MySQLからデータを取得する際に連番を振れば良いでしょう。

order by を指定してMySQLにデータを要求

MySQLが返してきた結果の受け取りは1レコードずつになるので、

その際に受け取った順に連番をつけて画面出力


という訳で・・・

(1)各レコードに表示順を意味するカラムを作成

  これが無いと並び替え出来ないという事であれば、必要でしょう。

  他のカラムで代用できるなら、別段用意しなくても構いません。

(2)表示順に合わせて連番になるように管理

  必ずしも連番である必要はなく、抜けがあっても困ることは無いでしょう。


さらに言えば・・・

(3)Mysqlでレコードの表示順を管理

  MySQLだけで考えると面倒でも、UIも含めたシステム全体として考えれば楽。

id:tomoyuki28jp

> 表示順だけの問題であるならば

これを管理する為に表示順を意味するカラムが必要です。

そのデータ構造のご質問をさせて頂きたかった訳です。

(上手く説明できていない部分があってすみません。)

厳密に連番じゃなくても良いですが、その表示順を意味するカラムで表示順を管理するのであれば、不整合が出てくると、+1や-1した際に後から問題が出てきます。

2009/11/23 11:11:34
  • id:Mook
    表示順が他の項目によらず、その順番で表示したいのであれば、それ以外に方法はないでしょう。
    他の項目名の順、登録順、更新順、などそれが他の項目の条件に依存しているのであれば表示順
    は不要になります。


    その場合は ORDER BY 句により表示順を制御できます。
    http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_11.htm
  • id:tomoyuki28jp
    Mookさん、

    コメントありがとうございます。

    > 表示順が他の項目によらず、その順番で表示したいのであれば
    この通りです。

    > それ以外に方法はないでしょう。
    このやり方だと表示順を変更する際に最大3回SQLが必要になりますが、
    もっと効率的なデータ構造はないかなぁと思い、ご質問をさせて頂いた次第です。

    コメントありがとうございました。
  • id:Mook
    >このやり方だと表示順を変更する際に最大3回SQLが必要になりますが、
    この部分は現状どのようにしているのでしょうか。

    それが問題だと感じているのであれば、それに関する回答を求めてはどうでしょうか。
  • id:kn1967
    回答させていただいた内容は質問文を一般論的なものだと判断してのものです。

    システム設計段階ではなく、既にシステム構造は変更不可な段階に、
    突入してしまっているという事であれば、その表示順はどのようなタイミングで、
    どのように変更されるのかの情報が無いと、質疑応答は迷走しそうです。

    どのような手順やタイミングで表示順が変更されるのかについて、
    もう少し具体的な情報(例でも結構)が無いと、
    問題点の解決が本当にデータ構造だけで済むような話なのか、
    (3)のようにUIも含めて考えないといけない話なのかも判断つけられません。

    例えば「最大3回」にしても、SQL3発を連続して発行するだけの話なのか、
    ユーザーインターフェースとのやり取りも介しているのかの違いによって、
    「ストアド一発でいいんじゃない?」とか
    「ajaxなどの仕組みで表示更新とデータベース更新作業を分担すれば?」など、
    方法は変わってきますので、どうして3回になってしまうのかについても、
    もう少し、書いていただければと思います。
    (エスパーのよう、どうして最大3回なのかを想像して、かつ、
    的確に言い当てられる人がいれば別ですが・・・)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません