2014-08-28 141 views
0

在mysql数据库中,我有以下表格和html搜索表单。现在我想从多个表中搜索选定的数据(来自搜索表单)。所选数据可能是gender,budgetlocation。对于位置我有7张桌子。 (第2-8)和每个7表第二列的值可能是01当用户注册为那里位置。因此,在此位置字段用户可以选择中央或东或西或其他搜索时。使用sql查询从多个表中搜索数据

那么我该如何编写一个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

你可以试试这个:EDITED

if($location == '1'){ 
    $tableName="tutor_signup_pre_central"; 
    } 
    if($location == '2'){ 
    $tableName="tutor_signup_pre_west"; 
    } 

同其他表also..then 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"; 

如果需要可以使用一些修改。

+0

'$ table?' – Shibbir 2014-08-28 06:04:03

+0

的值是多少,但是应该是$ tableName,它在每个地方使用。 – 2014-08-28 06:13:18

+0

我已经改变了现在看到的SQL。 – 2014-08-28 06:14:24

0

它应该是搜索数据的目的,您必须使用myisam引擎。

你的数据库设计过于规范化(No.2-8),每7个表有相同的列集。

您可以合并为单个数据库,如 tutor_signup_form(tutor_id,gender,feerange,name,email,location,place1,place2,place3)。

您可以编写查询,如select * from tutor_signup_form where gender =''or budget =''or location =''。无论情况如何。