質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

3743閲覧

経路列挙モデルで並び順を持つ方法

msx2

総合スコア174

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/05/17 03:37

階層構造を持つデータをMySQLに保存するため経路列挙モデルを使おうと思います。

ID名称パス
1/1/
2TOYOTA/1/2/
3PRIUS/1/2/3/
4ESTIMA/1/2/4/
5HONDA/1/5/
6NSX/1/5/6/
7CR-V/1/5/7/

ふと疑問に思ったのが、経路列挙モデルで並び順を指定したい場合どうしたらいいのでしょうか?

上記のデータをセレクトしてHONDAを上に持ってきたいです。
ソート用のカラムが追加されても構いません。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2017/05/17 04:02

同一階層内や階層を無視した並べ替えなら、単純にソート用のカラムを追加すればいいだけだと思いますが?
ttyp03

2017/05/17 04:30

経路列挙モデルについて無知なので教えてほしいのですが、TakahashiIkkiさんの回答で/1/5が/1/2よりも前に来るのはどういった理由からなのですか?法則がよくわからないです。
msx2

2017/05/17 05:30

TakahashiIkkiさんの回答に書かれている表は例示されているだけで、SQLでセレクトしてもあの様な並び順にはなりません。
ttyp03

2017/05/17 05:33

それはわかります。どうして5が上なんですかって質問です。並び順が経路列挙モデルうんぬんではなく、単にユーザー指定順であるなら、hihijijiさんのコメント通り、カラムを追加して順番を登録すればよいだけです。
msx2

2017/05/17 05:50

ユーザー指定順として5を上に持ってきたいということです、質問が言葉足らずで申し訳ないです。ソート用カラムを追加する方法がよさそうですね。
guest

回答2

0

ベストアンサー

上部の質問のやりとりをまとめておきます。

並び順は経路列挙モデルとは関係なく、ユーザー指定の順番とのこと。
であるなら、パスから並び順を決定する術はないので、ソート用のカラムを追加するのが妥当であると考えられます。

投稿2017/05/17 05:55

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msx2

2017/05/17 06:00

ご回答ありがとうございます。 質問の補足までしていただき感謝です。 もっと的確な質問ができるよう精進いたします!!
guest

0

ちなみに想定される並び順としてはどのような感じなのでしょう?

ID名称パス
1/1/
5HONDA/1/5/
6NSX/1/5/6/
7CR-V/1/5/7/
2TOYOTA/1/2/
3PRIUS/1/2/3/
4ESTIMA/1/2/4/

ですか?

投稿2017/05/17 03:54

Ikkitang

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msx2

2017/05/17 03:56

はい、この並びです
Ikkitang

2017/05/17 05:01 編集

深さ の カラムを追加してみて、Order by 深さ、パスの最終の値 desc とすれば、/1/ →/1/5/ → /1/2/ の順序は確保できますね。 ただ、それだと、 /1/5/ の次に /1/5/7が来てしまいますね…。 構造は3階層で確定なのですか? 例えば、/1/5/6/1/ や /1/5/6/2/ とかは無いんです? |ID|名称|パス|深さ| |:--|:--:|--:|--:| |1| 車 | /1/ |1| |5| HONDA | /1/5/ | 2 | |7| CR-V | /1/5/7/ | 3 | |6| NSX | /1/5/6/ | 3 | |2| TOYOTA | /1/2/ | 2 | |4| ESTIMA | /1/2/4/ | 3 | |3| PRIUS | /1/2/3/ | 3 |
msx2

2017/05/17 05:25

階層の深さは可変なので3階層以上になります。 深さカラムをヒントに私も考えてみましたが難しそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問