回答編集履歴
1
sample
test
CHANGED
@@ -7,3 +7,81 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
またestateが複数stattion情報をもつなら正規化する必要があります
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# sample
|
14
|
+
|
15
|
+
冗長に処理すればこんな感じ
|
16
|
+
|
17
|
+
- 元データ
|
18
|
+
|
19
|
+
```SQL
|
20
|
+
|
21
|
+
create table route(ro_id varchar(100) primary key,ro_name varchar(30));
|
22
|
+
|
23
|
+
insert into route values("kdfnakdnfakndfajfajdb","山手線");
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
create table station(st_id varchar(100) primary key,ro_id varchar(100),st_name varchar(30));
|
28
|
+
|
29
|
+
insert into station values("nfwiha4hqwkefnjg","kdfnakdnfakndfajfajdb","渋谷駅");
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
create table region(re_id varchar(100) primary key,re_name varchar(30));
|
34
|
+
|
35
|
+
insert into region values("faknfakndfa","港区");
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
create table estate(es_id varchar(100) primary key,es_name varchar(30),re_id varchar(100));
|
40
|
+
|
41
|
+
insert into estate values("fnaqi3flanv","estate","faknfakndfa");
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
create table access(ac_id int primary key auto_increment,es_id varchar(100),ro_id varchar(100),st_id varchar(100),during int);
|
46
|
+
|
47
|
+
insert into access(es_id,ro_id,st_id,during) values("fnaqi3flanv","aknfdfadn","fadkfakdnfadfn",3),
|
48
|
+
|
49
|
+
("fnaqi3flanv","kdfnakdnfakndfajfajdb","nfwiha4hqwkefnjg",19);
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
create table room(rm_id varchar(100) primary key,es_id varchar(100),floor int,rent int,is_taken tinyint);
|
54
|
+
|
55
|
+
insert into room values("asdfghjklsdfghjkl","fnaqi3flanv",3,120000,0)
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
- 検索
|
66
|
+
|
67
|
+
```SQL
|
68
|
+
|
69
|
+
select es.* from estate as es
|
70
|
+
|
71
|
+
inner join room as rm on es.es_id=rm.es_id and rm.rent>=100000
|
72
|
+
|
73
|
+
and rm.es_id in (
|
74
|
+
|
75
|
+
select es_id from access as ac where ac.st_id in(
|
76
|
+
|
77
|
+
select st_id from station as st
|
78
|
+
|
79
|
+
inner join route as ro on st.ro_id=ro.ro_id and ro.ro_name='山手線'
|
80
|
+
|
81
|
+
and st.st_name in('渋谷駅','恵比寿駅')
|
82
|
+
|
83
|
+
)
|
84
|
+
|
85
|
+
)
|
86
|
+
|
87
|
+
```
|