質問編集履歴

3

誤字訂正

2019/07/10 05:36

投稿

syk00
syk00

スコア11

test CHANGED
File without changes
test CHANGED
@@ -300,4 +300,6 @@
300
300
 
301
301
 
302
302
 
303
+
304
+
303
305
  ```

2

2019/07/10 05:36

投稿

syk00
syk00

スコア11

test CHANGED
File without changes
test CHANGED
@@ -256,7 +256,7 @@
256
256
 
257
257
 
258
258
 
259
- ###### *追記
259
+ ###### *備忘録用追記
260
260
 
261
261
  検索条件を付ける際、
262
262
 

1

既に解決していますが、質問時に記載漏れがあったことも含め、備忘録として追加編集しています。

2019/07/10 05:11

投稿

syk00
syk00

スコア11

test CHANGED
File without changes
test CHANGED
@@ -16,13 +16,17 @@
16
16
 
17
17
 
18
18
 
19
- 検索や表示結果には名称を使いたいと考えています。そのための記述方法を教えていただきたいです。
19
+ 検索や表示結果には名称を使いたいと考えています。
20
+
21
+ 名前、または所属や出身地名で検索をし、その結果を一覧で取得します。
22
+
23
+ そのための記述方法を教えていただきたいです。
20
24
 
21
25
  (SELECT指定はサブテーブルのカラムですが、FROM指定はメインテーブルを、そして検索条件でメインとサブを紐付けて参照するイメージでいます…)
22
26
 
23
27
 
24
28
 
25
- 取得イメージは下記のような感じです。
29
+ 取得イメージは下記のような感じです。(例……出身地:東京で検索をした場合)
26
30
 
27
31
 
28
32
 
@@ -96,9 +100,127 @@
96
100
 
97
101
 
98
102
 
99
-
103
+ ### テーブル作成とデータ挿入のSQL文
104
+
105
+
106
+
100
-
107
+ ```SQL
108
+
101
-
109
+ --テーブルの作成
110
+
111
+ CREATE TABLE MainData (
112
+
113
+ ID int,
114
+
115
+ FullName varchar(30),
116
+
117
+ DepartmentID int,
118
+
119
+ StateID int);
120
+
121
+
122
+
123
+ CREATE TABLE DepartmentData (
124
+
125
+ DepartmentID int,
126
+
127
+ DepartmentName varchar(30));
128
+
129
+
130
+
131
+ CREATE TABLE StateData (
132
+
133
+ StateID int,
134
+
135
+ StateName varchar(30));
136
+
137
+
138
+
139
+ --主キーの設定
140
+
141
+ ALTER TABLE MainData
142
+
143
+ ADD CONSTRAINT PK_ID PRIMARY KEY (ID);
144
+
145
+
146
+
147
+ ALTER TABLE DepartmentData
148
+
149
+ ADD CONSTRAINT PK_DID PRIMARY KEY (DepartmentID);
150
+
151
+
152
+
153
+ ALTER TABLE StateData
154
+
155
+ ADD CONSTRAINT PK_SID PRIMARY KEY (StateID);
156
+
157
+
158
+
159
+ --外部キーの設定
160
+
161
+ ALTER TABLE MainData
162
+
163
+ ADD FOREIGN KEY(DepartmentID)
164
+
165
+ REFERENCES DepartmentData(DepartmentID);
166
+
167
+
168
+
169
+ ALTER TABLE MainData
170
+
171
+ ADD FOREIGN KEY(StateID)
172
+
173
+ REFERENCES StateData(StateID);
174
+
175
+
176
+
177
+
178
+
179
+ --データの挿入(仮データです)
180
+
181
+ INSERT INTO DepartmentData VALUES (1,'営業部');
182
+
183
+ INSERT INTO DepartmentData VALUES (2,'人事部');
184
+
185
+ INSERT INTO DepartmentData VALUES (3,'広告部');
186
+
187
+
188
+
189
+ INSERT INTO StateData VALUES (1,'東京');
190
+
191
+ INSERT INTO StateData VALUES (2,'神奈川');
192
+
193
+ INSERT INTO StateData VALUES (3,'千葉');
194
+
195
+
196
+
197
+
198
+
199
+ INSERT INTO MainData VALUES (1,'田中太郎',1,1);
200
+
201
+ INSERT INTO MainData VALUES (2,'佐藤一郎',2,1);
202
+
203
+ INSERT INTO MainData VALUES (3,'鈴木花子',3,3);
204
+
205
+
206
+
207
+ INSERT INTO DepartmentData VALUES (1,'営業部');
208
+
209
+ INSERT INTO DepartmentData VALUES (2,'人事部');
210
+
211
+ INSERT INTO DepartmentData VALUES (3,'広告部');
212
+
213
+
214
+
215
+ INSERT INTO StateData VALUES (1,'東京');
216
+
217
+ INSERT INTO StateData VALUES (2,'神奈川');
218
+
219
+ INSERT INTO StateData VALUES (3,'千葉');
220
+
221
+
222
+
223
+ ```
102
224
 
103
225
 
104
226
 
@@ -131,3 +253,51 @@
131
253
 
132
254
 
133
255
  ```
256
+
257
+
258
+
259
+ ###### *追記分
260
+
261
+ 検索条件を付ける際、
262
+
263
+ 自分ではこのように記述をしてエラーを返されていました。
264
+
265
+ 今見ると自分でも不思議ですし、先輩方にも笑われてしまいそうですね。
266
+
267
+
268
+
269
+ ###### 問題の記述
270
+
271
+
272
+
273
+ ```SQL
274
+
275
+
276
+
277
+ --その1
278
+
279
+ SELECT a.FullName, b.DepartmentName, c.StateName
280
+
281
+ from MainData a
282
+
283
+ where a.FullName ='佐藤一郎'
284
+
285
+ left outer join DepartmentData b on a.DepartmentID = b.DepartmentID
286
+
287
+ left outer join StateData c on a.StateID = c.StateID ;
288
+
289
+
290
+
291
+ --その2
292
+
293
+ SELECT a.FullName, b.DepartmentName, c.StateName
294
+
295
+ from MainData a
296
+
297
+ where c.StateName IN (select c.StateName from MainData a
298
+
299
+ left outer join StateData c on a.StateID = c.StateID );
300
+
301
+
302
+
303
+ ```