【问题标题】:Search data from Multiple table based on a search form FIELDS根据搜索表单 FIELDS 从多个表中搜索数据
【发布时间】:2014-08-25 06:13:29
【问题描述】:

好吧,我有一个搜索表单,其中包含许多字段,例如...Html Dropdown 选定字段和许多复选框字段。

所以我想根据表单从 mysql 数据库多表 中搜索数据。在这个表单中我可以只选择下拉框,或者我可以选择所有复选框,或者我可以选择几个复选框。

所以我使用以下 sql 查询来获取数据。它只显示 1 个表格数据。我需要从多个表中获取数据。 sql 查询应该是什么样的?

    $search = mysql_query("SELECT * FROM tutor_signup_form WHERE gender = '$gender' OR feerange <= '$budget' ");
    $num =  mysql_num_rows($search);

具有列名的数据库表:

tutor_signup_form        (id, gender, feerange, name, fname, lname)
tutor_signup_edu_olevel  (id, o_psd, o_diploma, o_degree)
tutor_signup_edu_alevel  (id, a_psd, a_diploma, a_degree)
tutor_signup_edu_diploma (id, d_psd, d_diploma, d_degree)
tutor_signup_edu_degree  (id, dig_psd, dig_diploma, dig_degree)

感谢您的建议或帮助!

更新:

// search gender    
$query =  mysql_query("SELECT DISTINCT tutor_signup_form . *, tutor_signup_edu_psle . *, tutor_signup_edu_olevel . *, tutor_signup_edu_alevel . *, tutor_signup_edu_diploma . *, tutor_signup_edu_degree . *, tutor_signup_edu_masters . *, tutor_signup_edu_psd . *, tutor_signup_level_primary . *, tutor_signup_level_olevel . *, tutor_signup_level_alevel . *, tutor_signup_level_int . *, tutor_signup_level_uni . *, tutor_signup_level_music . *, tutor_signup_level_lang . *, tutor_signup_level_com . *, tutor_signup_pre_central . *, tutor_signup_pre_east . *, tutor_signup_pre_west . *, tutor_signup_pre_south . *, tutor_signup_pre_north . *, tutor_signup_pre_ne . *, tutor_signup_pre_nw . *  FROM tutor_signup_form

INNER JOIN tutor_signup_edu_psle ON tutor_signup_form.tutor_id = tutor_signup_form.tutor_id     
INNER JOIN tutor_signup_edu_olevel ON tutor_signup_form.tutor_id = tutor_signup_edu_olevel.tutor_id
INNER JOIN tutor_signup_edu_alevel ON tutor_signup_form.tutor_id = tutor_signup_edu_alevel.tutor_id 
INNER JOIN tutor_signup_edu_diploma ON tutor_signup_form.tutor_id = tutor_signup_edu_diploma.tutor_id
INNER JOIN tutor_signup_edu_degree ON tutor_signup_form.tutor_id = tutor_signup_edu_degree.tutor_id
INNER JOIN tutor_signup_edu_masters ON tutor_signup_form.tutor_id = tutor_signup_edu_masters.tutor_id
INNER JOIN tutor_signup_edu_psd ON tutor_signup_form.tutor_id = tutor_signup_edu_psd.tutor_id
INNER JOIN tutor_signup_level_primary ON tutor_signup_form.tutor_id = tutor_signup_level_primary.tutor_id
INNER JOIN tutor_signup_level_olevel ON tutor_signup_form.tutor_id = tutor_signup_level_olevel.tutor_id
INNER JOIN tutor_signup_level_alevel ON tutor_signup_form.tutor_id = tutor_signup_level_alevel.tutor_id
INNER JOIN tutor_signup_level_int ON tutor_signup_form.tutor_id = tutor_signup_level_int.tutor_id
INNER JOIN tutor_signup_level_uni ON tutor_signup_form.tutor_id =  tutor_signup_level_uni.tutor_id
INNER JOIN tutor_signup_level_music ON tutor_signup_form.tutor_id = tutor_signup_level_music.tutor_id
INNER JOIN tutor_signup_level_lang ON tutor_signup_form.tutor_id = tutor_signup_level_lang.tutor_id
INNER JOIN tutor_signup_level_com ON tutor_signup_form.tutor_id =  tutor_signup_level_com.tutor_id
INNER JOIN tutor_signup_pre_central ON tutor_signup_form.tutor_id = tutor_signup_pre_central.tutor_id
INNER JOIN tutor_signup_pre_east ON tutor_signup_form.tutor_id = tutor_signup_pre_east.tutor_id
INNER JOIN tutor_signup_pre_west ON tutor_signup_form.tutor_id = tutor_signup_pre_west.tutor_id
INNER JOIN tutor_signup_pre_south ON tutor_signup_form.tutor_id = tutor_signup_pre_south.tutor_id
INNER JOIN tutor_signup_pre_north ON tutor_signup_form.tutor_id =  tutor_signup_pre_north.tutor_id
INNER JOIN tutor_signup_pre_ne ON tutor_signup_form.tutor_id = tutor_signup_pre_ne.tutor_id
INNER JOIN tutor_signup_pre_nw ON tutor_signup_form.tutor_id = tutor_signup_pre_nw.tutor_id 
WHERE tutor_signup_form.feerange <= '$budget' ");

【问题讨论】:

    标签: php sql


    【解决方案1】:

    请查看MYSQL JOIN

    举个例子:

    $query="select A.gender,B.o_psd from tutor_signup_form as A,tutor_signup_edu_olevel as B where A.id=B.id"; //just an example condition
    

    【讨论】:

    • arunrc... 可能我必须先加入所有表,然后我需要使用 where 子句。我说的对吗?
    • 只需像简单的 mysql 查询一样获取列。但是使用唯一的名称(例如 A、B 等)来表示每个表。
    • 加入你想要的表,然后根据需要使用 where 子句。
    • 检查我更新的问题。现在为什么它不起作用?
    • 首先,使用表名本身并不好,因为它使查询变得奇怪。您可以使用简单的变量。你在ON的情况是什么?您正在比较 this table=that table。您要检查此表列的值=该表列的值
    猜你喜欢
    • 2020-03-20
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2018-10-04
    • 2015-12-29
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多