テーブルを作りたいのですが、思い描くテーブルが作れず、困っています・・・
例えば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文でテーブルを作ってください。
補足事項等ありましたらご指摘下さい。追加いたします。
よろしくお願いします。
No.2
- 回答日時:
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'
とすればよいでしょう
No.1ベストアンサー
- 回答日時:
一読して、気になった事は2つ。
1.提示されたテーブルで「ID」が何を指すのか分からない。
2.Mさんという情報がテーブルの中にない。
仮に、IDがMさん、すなわち人物を指すのであれば、テーブルはこのままで良い。主キーがID単独ではなく、ID、日付、場所の3つに対して付与されれば良い。
MySQLで以下のような書き方が許されるかはわからない(当方、Oracle、DB2、Microsoft SQL Server、PostgreSQLの4つくらいしか普段使わない)が、とりあえずこれを参考にMySQLで「複合主キー」をはるにはどうすれば良いか調べてみると良いだろう。
CREATE TABLE TRIP (
ID id,
日付 date,
場所 point,
CONSTRAINT PK_TRIP PRIMARY KEY(ID,日付,場所) -- 複合主キーと言い、ID、日付、場所の3つの組み合わせがユニークとなる制約を作成する
)
この回答への補足
ご回答ありがとうございます。
説明不足で申し訳ないです・・・
簡略化するためMさんをIDに置き換えました。
本来は、IDを外部キーにして、外部で人物(Mさん)を登録しようとしてました。
ですが、質問どおりMさんを置いといて考えていただいて結構です!
複合主キーは使ったことなかったです。参考になりました。
一度それで作ってみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle SQL update方法 2 2022/06/22 14:07
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです。こんな感じですか?あ...
-
テーブル名が可変の場合のクエ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
select *, `人口(男)`AND`人口(...
-
下記の問合せを行うクエリを、P...
-
うまくいきません教えてくださ...
-
東京23区を、皇居を中心とした...
-
SQLです。下記の問合せを行うク...
-
htmlコードで書かれた表にphpで...
-
無料なのに支払するのか!です...
-
【初歩】ラジオボタンをつかっ...
-
MySQLのエラーメッセージ(エラ...
-
sqlのエラー
-
テーブルのカラム構造だけをコ...
-
PhpMyAdminで作成して実行せよ...
-
下記の問合せを行うクエリを、P...
-
PHPとMySQLを使った掲示板の作り方
-
SQLでカラムを追加し、条件に合...
-
MySQL NULLだけをカウントして...
-
2023年10月25日現在のMAMP ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブル名が可変の場合のクエ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
SQLでカラムを追加し、条件に合...
-
データベースの接続に失敗して...
-
東京23区を、皇居を中心とした...
-
BGMを教えてほしいです!
-
mysqlのupdate構文についての質...
-
エラー 1068 (42000): 複数の主...
-
下の画像はSQLの4大命令の性質...
-
htmlコードで書かれた表にphpで...
-
mysqlでunixtimeによる日付範囲...
-
SQLについて教えて下さい。 SEL...
-
うまくいきません教えてくださ...
-
無料なのに支払するのか!です...
-
【初歩】ラジオボタンをつかっ...
-
MySQLでcreateが使えない MySQL...
-
MySQLのテーブル作成でハイフン...
-
SQLで日付別のIDを生成するには
-
MySQLでエラーがでて前に進めま...
-
mysqlがインストールされている...
おすすめ情報