質問: sql文でテーブルを作りたいのですが・・・ テーブルを作りたいのですが、思い描くテーブルが作れず、困っています・・・ 例えばmさんがa→b→c→dと旅行に行ったとします。 そのとき、行った場所によって日付が登録されるようにしたいと思っています。 このように、別な人もいろいろと旅行し、それぞれの日付があり、どんどんと格納していきます。 最初に id id 日付 date 場所 point (名前はとりあえず、idとします) でテーブルを作ろうとしましたが、これだとid一つにつき、日付と場所も一つずつしか入りませんよね? どういったテーブルを作ればいいでしょうか? 思い描くテーブルは下記のような感じです。 id 日付 場所 -------------- 1 |2010/10/06 | a |2010/10/14 | b |2010/10/20 | c |2010/10/25 | d -------------------------- 2 |2010/10/23 | b |2010/10/24 | a |2010/10/25 | d |2010/10/27 | c -------------------------- 3 |2010/10/25 | d |2010/10/27 | c |2010/11/03 | b |2010/11/04 | a |2010/11/07 | d |2010/11/10 | c ------------------------- 4 |2010/11/10 | b |2010/11/15 | a |2010/11/16 | d ・・・・・・・・・・・・・・・ このように一つのidに対して、日付と場所がランダムの数で格納したいのですが、これって可能でしょうか? テーブルを2つ(以上)作り、外部キーを使ってもかまいません。 また、足りなければ違うidなどでカバーしてもかまいません。 実際は、このようなテーブルを作り、一人毎の動線を調べるために活用したいと思っています。 mさん:今日はaに行って、明日はbに行き、明後日はcに行った。すなわち動線は・・・のような感じです。 sql文でテーブルを作ってください。 補足事項等ありましたらご指摘下さい。追加いたします。 よろしくお願いします。
回答: create table tbl(id int,hiduke date,point varchar(10)); insert into tbl values( '1','2010/10/06','a'),( '1','2010/10/14','b'),( '1','2010/10/20','c'),( '1','2010/10/25','d'),( '2','2010/10/23','b'),( '2','2010/10/24','a'),( '2','2010/10/25','d'),( '2','2010/10/27','c'),( '3','2010/10/25','d'),( '3','2010/10/27','c'),( '3','2010/11/03','b'),( '3','2010/11/04','a'),( '3','2010/11/07','d'),( '3','2010/11/10','c'),( '4','2010/11/10','b'),( '4','2010/11/15','a'),( '4','2010/11/16','d'); というデータ保持をして select group_concat(point order by hiduke asc) from tbl where id='1' とすればよいでしょう