回答編集履歴
2
調整
test
CHANGED
@@ -1 +1,34 @@
|
|
1
1
|
できないことはないと思いますが管理も煩雑ですし効率も悪いので、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。
|
2
|
+
|
3
|
+
# 参考
|
4
|
+
users,teams,hobbiesの独立したテーブルがあり
|
5
|
+
users=teams、users=hobbiesをリレーションさせるために中間テーブルを作るというのではればこんな感じ
|
6
|
+
```SQL
|
7
|
+
create table teams(tid int primary key ,title varchar(20));
|
8
|
+
insert into teams values(1,'giants'),(2,'tigers');
|
9
|
+
|
10
|
+
create table users(uid int primary key ,name varchar(20),age int,title varchar(20));
|
11
|
+
insert into users values
|
12
|
+
(1,'tanaka',25,'pitcher'),
|
13
|
+
(2,'nakata',30,'catcher');
|
14
|
+
|
15
|
+
create table hobbies(hid int primary key,title varchar(20));
|
16
|
+
insert into hobbies values
|
17
|
+
(1,'fast'),
|
18
|
+
(2,'correct'),
|
19
|
+
(3,'carefully'),
|
20
|
+
(4,'pinch hitter');
|
21
|
+
|
22
|
+
create table user_team(uid int not null,tid int not null,primary key(uid,tid) );
|
23
|
+
insert into user_team values(1,1),(2,2);
|
24
|
+
|
25
|
+
create table user_hobby(uid int not null,hid int not null,primary key(uid,hid) );
|
26
|
+
insert into user_hobby values(1,1),(2,2);
|
27
|
+
|
28
|
+
|
29
|
+
select * from users as t1
|
30
|
+
left join user_team as t2 on t1.uid=t2.uid
|
31
|
+
left join teams as t3 on t2.tid=t3.tid
|
32
|
+
left join user_hobby as t4 on t1.uid=t4.uid
|
33
|
+
left join hobbies as t5 on t4.hid=t5.hid
|
34
|
+
```
|
1
ついき
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
できないことはないと思いますが、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。
|
1
|
+
できないことはないと思いますが管理も煩雑ですし効率も悪いので、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。
|