在mysql数据库中我跟随表和html搜索表单。现在,我想从多个表中搜索所选数据(来自搜索表单)。选定的数据可以是gender
,budget
或location
。对于位置我有7个表。 (编号2-8),当用户注册为Location时,每个7表第二列值可以是0
或1
。在此位置字段中,用户可以选择Central或东或西或......其他人搜索时。
那么我如何编写一个sql查询(或Sql Join Query)来从Mysql表中获取搜索结果呢?
Php变量:
$gender = inputvalid($_POST['gender']);
$budget = inputvalid($_POST['budget']);
$location = inputvalid($_POST['location']);
列名称
的表名称1. tutor_signup_form (tutor_id, gender, feerange, name, email)
2. tutor_signup_pre_central (tutor_id, pre_c_central, place1, place2, place3)
3. tutor_signup_pre_west (tutor_id, pre_w_west, place1, place2, place3)
4. tutor_signup_pre_east (tutor_id, pre_e_east, place1, place2, place3)
5. tutor_signup_pre_south (tutor_id, pre_s_south, place1, place2, place3)
6. tutor_signup_pre_north (tutor_id, pre_n_north, place1, place2, place3)
7. tutor_signup_pre_ne (tutor_id, pre_ne_northEast, place1, place2, place3)
8. tutor_signup_pre_nw (tutor_id, pre_nw_northWest, place1, place2, place3)
我的搜索表单如下所示:
<tr>
<td style="width:100px;">1. Gender:</td>
<td>
<select name="gender">
<option value="">--Select--</option>
<option value="male">Male only</option>
<option value="female">Female only</option>
</select>
</td>
</tr>
<tr>
<td>2. Budget:</td>
<td>
<select name="budget">
<option value="" SELECTED>--Select--</option>
<option value="90">$90 and below</option>
<option value="80">$80 and below</option>
<option value="70">$70 and below</option>
<option value="60">$60 and below</option>
<option value="50">$50 and below</option>
<option value="40">$40 and below</option>
<option value="30">$30 and below</option>
<option value="25">$25 and below</option>
<option value="20">$20 and below</option>
<option value="15">$15 and below</option>
<option value="10">$10 and below</option>
</select>
</td>
</tr>
<tr>
<td>3. Location:</td>
<td>
<select name='location'>
<option value="" SELECTED>--Select--.</option>
<option value='1' />Central City</option>
<option value='2' />East City</option>
<option value='3' />West City </option>
<option value='4' />South City </option>
<option value='5' />North City </option>
<option value='6' />North East </option>
<option value='7' />North West </option>
</select>
</td>
</tr>
答案 0 :(得分:0)
你可以试试这个:已编辑
if($location == '1'){
$tableName="tutor_signup_pre_central";
}
if($location == '2'){
$tableName="tutor_signup_pre_west";
}
对于其他表也一样..然后是sql。
$sql = "select tutor_signup_form.*,$tableName.place1,$tableName.place2,$tableName.place3 from tutor_signup_form left join $tableName on tutor_signup_form.tutor_id = $tableName.tutor_id where tutor_signup_form.gender= $gender and tutor_signup_form.feerange=$budget";
如果需要,可以使用一些修改。
答案 1 :(得分:0)
它应该是搜索数据的目的,你必须使用myisam引擎。
您的数据库设计太规范化了(第2-8号),每个7个表都有相同的列设置。
您可以合并为单个数据库 tutor_signup_form(tutor_id,性别,费用范围,姓名,电子邮件,地理位置,地点1,地点2,地点3)。
您可以在tutor_signup_form中编写类似 select *的查询,其中gender =''或budget =''或location =''。无论什么条件需要。