質問編集履歴

1

現状のテーブル構成をあげてみました。

2018/07/06 09:15

投稿

chapp
chapp

スコア233

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,231 @@
67
67
 
68
68
 
69
69
  お忙しい中恐縮ですが、ご指南のほどよろしくお願いいたします。
70
+
71
+
72
+
73
+
74
+
75
+ ■■ 追加情報 ■■
76
+
77
+ 実際のテーブル構成は以下の通りです。
78
+
79
+ 質問ではイメージしやすいようにと個人が好きな果物を例えにしていますが、実際は不動産物件情報で、それに付随する、「駅チカ物件」「ペット可」「デザイナーズ物件」などです。
80
+
81
+
82
+
83
+ ですので、
84
+
85
+
86
+
87
+ memberテーブル ⇒ property_dataテーブルであり(※)
88
+
89
+
90
+
91
+ kudamonoテーブル ⇒ osusumeテーブルであり
92
+
93
+
94
+
95
+ likeテーブル ⇒ property_data_osusumeであります。
96
+
97
+
98
+
99
+ ※不動産物件という事ありカラムが多数あるので多くを省略しています。
100
+
101
+
102
+
103
+
104
+
105
+ これら構成の元、方位が西、または南西向きで、3LDK、ペット可で駅チカ物件と検索した際、該当する物件を抽出したいと考えたとき、例の果物に当たるosusumeが、チェックボックスでn個を検索条件とした場合、どのようなSQLになるのか?悩んでいるところです。
106
+
107
+
108
+
109
+ ```ここに言語を入力
110
+
111
+ CREATE TABLE `property_data` (
112
+
113
+ `data_no` int(11) NOT NULL,
114
+
115
+ `data_corporate_user_no` int(11) NOT NULL,
116
+
117
+ `data_cate_b_no` int(11) NOT NULL,
118
+
119
+ `data_cate_m_no` int(11) NOT NULL,
120
+
121
+ `data_pr` varchar(255) NOT NULL,
122
+
123
+ `data_bukkenn_name` varchar(255) NOT NULL,
124
+
125
+ `data_train1` varchar(64) NOT NULL,
126
+
127
+ `data_train_station1` varchar(64) NOT NULL,
128
+
129
+ `data_train_station_toho1` int(11) NOT NULL,
130
+
131
+ `data_addr1` varchar(128) NOT NULL,
132
+
133
+ `data_addr2` varchar(128) NOT NULL,
134
+
135
+ `data_addr3` varchar(255) NOT NULL,
136
+
137
+ `data_houi` enum('','北','北東','東','南東','南','南西','西','北西') NOT NULL,
138
+
139
+ `data_madori1` varchar(16) NOT NULL,
140
+
141
+ `data_madori2` enum('ワンルーム','K','DK','LK','LDK','SK','SDK','SLK','SLDK') NOT NULL
142
+
143
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
144
+
145
+
146
+
147
+ --
148
+
149
+ -- テーブルのデータのダンプ `property_data`
150
+
151
+ --
152
+
153
+
154
+
155
+ INSERT INTO `property_data` (`data_no`, `data_corporate_user_no`, `data_cate_b_no`, `data_cate_m_no`, `data_pr`, `data_bukkenn_name`, `data_train1`, `data_train_station1`, `data_train_station_toho1`, `data_addr1`, `data_addr2`, `data_addr3`, `data_houi`, `data_madori1`, `data_madori2`) VALUES
156
+
157
+ (20, 12, 1, 1, '駅近、ファミリータイプ物件!通り沿いで交通に便利なの物件です。', 'サニーレジデンス301', 'JR上越線', '長岡', 15, '新潟県', '長岡市', '旭町2丁目3-31', '東', '3', 'DK'),
158
+
159
+ (21, 12, 1, 1, '駅近、ファミリータイプ物件!通り沿いで交通に便利なの物件です。', 'サニーレジデンス402', 'JR上越線', '長岡', 15, '新潟県', '長岡市', '旭町2丁目3-25', '南西', '3', 'DK'),
160
+
161
+ (22, 13, 2, 10, 'ファミリー向けです!', 'エヌステージ似弐号館', 'JR弥彦線', '北三条', 2, '新潟県', '三条市', '本町1-3', '東', '4', 'LDK'),
162
+
163
+ (23, 13, 2, 10, 'ファミリー向けの物件です!', 'エヌステージ壱号館', 'JR弥彦線', '北三条', 10, '新潟県', '三条市', '本町1-3-17', '南東', '4', 'LDK'),
164
+
165
+ (24, 14, 1, 4, 'アスファルト、街灯、屋根付きのセキュリティーの高い駐車場', 'アテンド駐車場', 'JR上越線', '長岡', 20, '新潟県', '長岡市', '土合5丁目10-17', '北', '3', 'DK'),
166
+
167
+ (25, 12, 1, 1, 'エントランスが貴方の行き帰りをおもてなしします', 'Nステージ', 'JR信越本線(直江津~新潟)', '亀田', 40, '新潟県', '新潟市江南区', '二本木4丁目5-37', '南', '2', 'K'),
168
+
169
+ (26, 12, 2, 12, '広々した憧れの一軒家 二世帯でも対応可能な広さです', '三和区錦 一軒家', '北越急行ほくほく線', '大池いこいの森', 50, '新潟県', '上越市', '三和区錦1180-4', '南東', '5', 'LDK'),
170
+
171
+ (27, 14, 1, 1, '加治川のせせらぎ日頃の疲れを癒してくれます', 'ライフル', 'JR羽越本線', '新発田', 5, '新潟県', '新発田市', '豊町2丁目9-1', '北東', '3', 'DK'),
172
+
173
+ (29, 12, 2, 12, '広々した憧れの一軒家 二世帯でも対応可能な広さです', '三和区錦 一軒家', '北越急行ほくほく線', '大池いこいの森', 25, '新潟県', '上越市', '三和区錦1180-1', '南', '5', 'LDK'),
174
+
175
+ (30, 13, 2, 17, '想定利回り10%強! 現況満室の高収益物件!', 'エヌステージ似弐号館', 'JR上越線', '越後堀之内', 2, '新潟県', '三条市', '本町1-3', '南', '4', 'LDK');
176
+
177
+
178
+
179
+ ```
180
+
181
+
182
+
183
+
184
+
185
+ ```ここに言語を入力
186
+
187
+ CREATE TABLE `osusume` (
188
+
189
+ `osusume_no` int(11) NOT NULL,
190
+
191
+ `osusume_name` varchar(255) NOT NULL
192
+
193
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
194
+
195
+
196
+
197
+ --
198
+
199
+ -- テーブルのデータのダンプ `osusume`
200
+
201
+ --
202
+
203
+
204
+
205
+ INSERT INTO `osusume` (`osusume_no`, `osusume_name`) VALUES
206
+
207
+ (19, 'お風呂広い'),
208
+
209
+ (7, 'シニア(60歳以上)入居可'),
210
+
211
+ (22, 'デザイナーズ物件'),
212
+
213
+ (13, 'ファミリー向け'),
214
+
215
+ (17, 'フリーレント'),
216
+
217
+ (9, 'ペット可'),
218
+
219
+ (12, 'ルームシェア可'),
220
+
221
+ (21, 'ロープライス・フローライフ'),
222
+
223
+ (11, '事務所利用可'),
224
+
225
+ (6, '二人入居可'),
226
+
227
+ (14, '保証人不要'),
228
+
229
+ (1, '女性限定'),
230
+
231
+ (8, '子供可'),
232
+
233
+ (4, '学生可'),
234
+
235
+ (18, '更新料不要'),
236
+
237
+ (10, '楽器可'),
238
+
239
+ (3, '法人可'),
240
+
241
+ (2, '男性限定'),
242
+
243
+ (20, '訳アリ物件'),
244
+
245
+ (23, '駅チカ物件');
246
+
247
+ ```
248
+
249
+
250
+
251
+
252
+
253
+ ```ここに言語を入力
254
+
255
+ CREATE TABLE `property_data_osusume` (
256
+
257
+ `property_data_no_osusume` int(11) NOT NULL,
258
+
259
+ `property_data_data_no_osusume` int(11) NOT NULL,
260
+
261
+ `property_data_osusume_no` int(11) NOT NULL
262
+
263
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
264
+
265
+
266
+
267
+ --
268
+
269
+ -- テーブルのデータのダンプ `property_data_osusume`
270
+
271
+ --
272
+
273
+
274
+
275
+ INSERT INTO `property_data_osusume` (`property_data_no_osusume`, `property_data_data_no_osusume`, `property_data_osusume_no`) VALUES
276
+
277
+ (1, 1, 1),
278
+
279
+ (2, 1, 7),
280
+
281
+ (3, 1, 12),
282
+
283
+ (4, 2, 22),
284
+
285
+ (5, 2, 3),
286
+
287
+ (6, 2, 8),
288
+
289
+ (7, 3, 12),
290
+
291
+ (8, 3, 18),
292
+
293
+ (9, 4, 22);
294
+
295
+
296
+
297
+ ```