mysql连接多个子句

时间:2018-09-24 13:13:55

标签: php mysql

我有一个搜索功能,用户可以提供2个输入:$ studies和$ elements。我需要搜索数据库,在这种情况下,数据库有两个表:Studies和Studies_elements。我想加入这两个表,其中搜索功能找到了研究和元素的匹配项。我的MYSQL查询应该如何显示?现在我有这个:

let vc = ///

self.navigationController?.pushViewController(vc, animated: true)

//

self.navigationController?.popViewController(animated: true)

该代码应产生合并表,并且可以。但是,在数据库中找不到$studies = mysqli_real_escape_string($conn, $_POST['search-studies']); $elements = mysqli_real_escape_string($conn, $_POST['search-elements']); $sql = SELECT S.*, P.* FROM studies S LEFT JOIN studies_elements P ON S.study_id = P.study_id AND S.author LIKE '%$studies%' OR S.study_name LIKE '%$studies%' OR s.abstract LIKE '%$studies%' AND P.first_element LIKE '%$elements%' OR P.second_element LIKE '%$elements%' OR P.third_element LIKE '%$elements%' ORDER BY S.study_id 时,也会产生相同的结果。例如,如果我将值'john'传递为$elements,将'交易成本'传递为$studies,则即使'bullshit'传递的结果与我传递'john'和'bullshit'时的结果完全相同'不在P.first_element,P.second_element或P.third_element中。我尝试在各个位置添加一些括号,但无济于事。

我需要构造一个接受这两个输入的查询,检查是否可以将它们合并到一个表中,然后检索该表。

1 个答案:

答案 0 :(得分:1)

在错过时使用括号()或条件,这就是为什么它为您提供结果的所有组合

SELECT S.*, P.* 
       FROM studies S 
           JOIN studies_elements P 
               ON S.study_id = P.study_id 
               AND (S.author LIKE '%$studies%' OR S.study_name LIKE '%$studies%' OR s.abstract LIKE '%$studies%')
               AND (P.first_element LIKE '%$elements%' OR P.second_element LIKE '%$elements%' OR P.third_element LIKE '%$elements%')
       ORDER BY S.study_id
相关问题