【问题标题】:Search data from multiple tables using sql query使用 sql 查询从多个表中搜索数据
【发布时间】:2014-10-21 21:11:19
【问题描述】:

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

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

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    你可以试试这个:EDITED

      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"; 
    

    如果需要,可以进行一些修改。

    【讨论】:

    • $table ?的值是多少
    • 对不起,它应该是 $tableName ,它在每个地方都使用。
    • 我已经更改了 sql 现在看看。
    • 我会建议你改变你的数据库结构。可能将您的表转换为添加位置、位置 1、位置 2、位置 3 的位置,其中位置将引用 pre_c_central 和其他相应的值。
    • 是的,你是对的,但在每个位置我都有 24 个位置。 7*24 = 总共 168 列。是不是正确的方式..
    【解决方案2】:

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

    你的数据库设计太规范了。(2-8号)每7个表都有相同的列集。

    您可以合并为单个数据库,例如 tutor_signup_form(tutor_id、性别、费用范围、姓名、电子邮件、位置、地点 1、地点 2、地点 3)。

    您编写的查询类似于 select * fromutor_signup_form where gender='' or budget ='' or location =''。任何条件都需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      相关资源
      最近更新 更多