<div dir="ltr">須藤様<div><br></div><div>佐藤です。</div><div><br></div><div>ご連絡をありがとうございます。</div><div>なるほど、参照型の使い所がわかりました。</div><div><br></div><div>もしFoodテーブルのcategoryカラムがすでに文字列で入っていて</div><div>データを作り直す場合は次のようなことで移行するということですね。</div><div><br></div><div>1, データをダンプして、スキーマの部分だけ修正してロードしなおす。</div><div>2, column_copyを使ってカラムをコピーする</div><div><br></div><div>試してみたいと思います。ありがとうございました。</div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">2015年9月16日(水) 22:50 Kouhei Sutou <<a href="mailto:kou****@clear*****">kou****@clear*****</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">須藤です。<br>
<br>
In <<a href="mailto:CA%2BTq-Rpm0gUZWFTG%2Bq6U****@mail*****" target="_blank">CA+Tq****@mail*****</a>><br>
"[groonga-dev,03507] データのソートについて" on Wed, 16 Sep 2015 06:41:09 +0000,<br>
Hiroyuki Sato <<a href="mailto:hiroy****@gmail*****" target="_blank">hiroy****@gmail*****</a>> wrote:<br>
<br>
> select時のソートについて教えて下さい。<br>
><br>
> 表の方がわかりやすいのでgistに書きました。<br>
> <a href="https://gist.github.com/hiroyuki-sato/79c4ac1b80736956bbe5" rel="noreferrer" target="_blank">https://gist.github.com/hiroyuki-sato/79c4ac1b80736956bbe5</a><br>
><br>
> やりたいことは下記のようにデータを並べ替える条件を<br>
> 複数持つにはどうしたら良いか?ということです。<br>
<br>
Gistの方に書いている通り、種類ごとに順序を持たせることができ<br>
ます。種類をテーブル参照型にするところがポイントです。<br>
<br>
具体例はこんな感じです。<br>
<br>
----<br>
table_create Categories TABLE_HASH_KEY ShortText<br>
column_create Categories order1 COLUMN_SCALAR Int32<br>
column_create Categories order2 COLUMN_SCALAR Int32<br>
column_create Categories order3 COLUMN_SCALAR Int32<br>
<br>
load --table Categories<br>
[<br>
{"_key": "果物", "order1": 1, "order2": 2, "order3": 3},<br>
{"_key": "野菜", "order1": 2, "order2": 1, "order3": 2},<br>
{"_key": "魚", "order1": 3, "order2": 3, "order3": 1}<br>
]<br>
<br>
table_create Foods TABLE_HASH_KEY ShortText<br>
column_create Foods category COLUMN_SCALAR Categories<br>
<br>
load --table Foods<br>
[<br>
{"_key": "りんご", "category": "果物"},<br>
{"_key": "バナナ", "category": "果物"},<br>
{"_key": "もも", "category": "果物"},<br>
{"_key": "キューリ", "category": "野菜"},<br>
{"_key": "キャベツ", "category": "野菜"},<br>
{"_key": "サンマ", "category": "魚"},<br>
{"_key": "鯛", "category": "魚"},<br>
{"_key": "イワシ", "category": "魚"}<br>
]<br>
<br>
select Foods --sortby category.order1<br>
# [<br>
# [<br>
# 0,<br>
# 1442411204.23089,<br>
# 0.000399351119995117<br>
# ],<br>
# [<br>
# [<br>
# [<br>
# 8<br>
# ],<br>
# [<br>
# [<br>
# "_id",<br>
# "UInt32"<br>
# ],<br>
# [<br>
# "_key",<br>
# "ShortText"<br>
# ],<br>
# [<br>
# "category",<br>
# "Categories"<br>
# ]<br>
# ],<br>
# [<br>
# 1,<br>
# "りんご",<br>
# "果物"<br>
# ],<br>
# [<br>
# 2,<br>
# "バナナ",<br>
# "果物"<br>
# ],<br>
# [<br>
# 3,<br>
# "もも",<br>
# "果物"<br>
# ],<br>
# [<br>
# 4,<br>
# "キューリ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 5,<br>
# "キャベツ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 7,<br>
# "鯛",<br>
# "魚"<br>
# ],<br>
# [<br>
# 6,<br>
# "サンマ",<br>
# "魚"<br>
# ],<br>
# [<br>
# 8,<br>
# "イワシ",<br>
# "魚"<br>
# ]<br>
# ]<br>
# ]<br>
# ]<br>
select Foods --sortby category.order2<br>
# [<br>
# [<br>
# 0,<br>
# 1442411204.23131,<br>
# 0.000266313552856445<br>
# ],<br>
# [<br>
# [<br>
# [<br>
# 8<br>
# ],<br>
# [<br>
# [<br>
# "_id",<br>
# "UInt32"<br>
# ],<br>
# [<br>
# "_key",<br>
# "ShortText"<br>
# ],<br>
# [<br>
# "category",<br>
# "Categories"<br>
# ]<br>
# ],<br>
# [<br>
# 4,<br>
# "キューリ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 5,<br>
# "キャベツ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 1,<br>
# "りんご",<br>
# "果物"<br>
# ],<br>
# [<br>
# 2,<br>
# "バナナ",<br>
# "果物"<br>
# ],<br>
# [<br>
# 3,<br>
# "もも",<br>
# "果物"<br>
# ],<br>
# [<br>
# 6,<br>
# "サンマ",<br>
# "魚"<br>
# ],<br>
# [<br>
# 7,<br>
# "鯛",<br>
# "魚"<br>
# ],<br>
# [<br>
# 8,<br>
# "イワシ",<br>
# "魚"<br>
# ]<br>
# ]<br>
# ]<br>
# ]<br>
select Foods --sortby category.order3<br>
# [<br>
# [<br>
# 0,<br>
# 1442411204.23159,<br>
# 0.000393867492675781<br>
# ],<br>
# [<br>
# [<br>
# [<br>
# 8<br>
# ],<br>
# [<br>
# [<br>
# "_id",<br>
# "UInt32"<br>
# ],<br>
# [<br>
# "_key",<br>
# "ShortText"<br>
# ],<br>
# [<br>
# "category",<br>
# "Categories"<br>
# ]<br>
# ],<br>
# [<br>
# 8,<br>
# "イワシ",<br>
# "魚"<br>
# ],<br>
# [<br>
# 7,<br>
# "鯛",<br>
# "魚"<br>
# ],<br>
# [<br>
# 6,<br>
# "サンマ",<br>
# "魚"<br>
# ],<br>
# [<br>
# 5,<br>
# "キャベツ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 4,<br>
# "キューリ",<br>
# "野菜"<br>
# ],<br>
# [<br>
# 1,<br>
# "りんご",<br>
# "果物"<br>
# ],<br>
# [<br>
# 3,<br>
# "もも",<br>
# "果物"<br>
# ],<br>
# [<br>
# 2,<br>
# "バナナ",<br>
# "果物"<br>
# ]<br>
# ]<br>
# ]<br>
# ]<br>
----<br>
<br>
<br>
--<br>
須藤 功平 <<a href="mailto:kou****@clear*****" target="_blank">kou****@clear*****</a>><br>
株式会社クリアコード <<a href="http://www.clear-code.com/" rel="noreferrer" target="_blank">http://www.clear-code.com/</a>><br>
<br>
Groongaベースの全文検索システムを総合サポート:<br>
<a href="http://groonga.org/ja/support/" rel="noreferrer" target="_blank">http://groonga.org/ja/support/</a><br>
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:<br>
<a href="http://www.clear-code.com/recruitment/" rel="noreferrer" target="_blank">http://www.clear-code.com/recruitment/</a><br>
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:<br>
<a href="http://www.clear-code.com/services/code-reader/" rel="noreferrer" target="_blank">http://www.clear-code.com/services/code-reader/</a><br>
<br>
_______________________________________________<br>
groonga-dev mailing list<br>
<a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
<a href="http://lists.osdn.me/mailman/listinfo/groonga-dev" rel="noreferrer" target="_blank">http://lists.osdn.me/mailman/listinfo/groonga-dev</a><br>
</blockquote></div>