[英]How can I get results from 2 queries
我有一个脚本搜索数据库中的用户。 我有两个输入字段,以便我可以搜索例如城市和门牌号码。 我想要的是,如果我在城市字段中输入例如伦敦,而在数字20中输入伦敦,其中包含伦敦和20。 我不太清楚如何实现这一目标。 我在Google上做了足够多的研究,但仍未找到答案。
这是我的代码:
if($_GET['search'] != ''){
$result = mysql_query("SELECT * FROM klant WHERE klant_id LIKE '%" .$search."%' OR voornaam LIKE '%" .$search."%' OR achternaam LIKE '%" .$search."%' OR email LIKE '%" .$search."%' OR plaats LIKE '%" .$search."%' OR bedrijfsnaam LIKE '%" .$search."%'ORDER BY klant_id DESC");
$result2 = mysql_query("SELECT * FROM klant WHERE klant_id LIKE '%" .$search2."%' OR voornaam LIKE '%" .$search2."%' OR achternaam LIKE '%" .$search2."%' OR email LIKE '%" .$search2."%' OR plaats LIKE '%" .$search2."%' OR bedrijfsnaam LIKE '%" .$search2."%'ORDER BY klant_id DESC");
$i = 0;
}
我需要的是能够在这两个搜索值($ search和$ search2)组合的情况下给出正确的$ result的东西。 从而让我更容易搜索。
希望我能够很好地表达我的问题,让你了解我,我希望你能帮助我!
好吧,如果你想运行2个查询并得到1个结果集,你应该看一个UNION查询
两个查询之间的单词“UNION”(仅用于不同的值)或“UNION ALL”(允许重复)将它们连接到一个结果表中。
但是在搜索方面,我强烈建议不要使用%word%。 一旦你拥有大量数据,它将极大地降低你的搜索速度,因为SQL会遍历整个字符串的长度,以找到包含所讨论单词的任何内容。
请尝试以下逻辑 -
if($_GET['search'] != ''){
$search = $_GET['search'];
$where[] = "( klant_id LIKE '%" .$search."%' OR voornaam LIKE '%" .$search."%' OR achternaam LIKE '%" .$search."%' OR email LIKE '%" .$search."%' OR plaats LIKE '%" .$search."%' OR bedrijfsnaam LIKE '%" .$search."%' ) ";
}
if($_GET['search2'] != ''){
$search2 = $_GET['search2'];
$where[] = " ( klant_id LIKE '%" .$search2."%' OR voornaam LIKE '%" .$search2."%' OR achternaam LIKE '%" .$search2."%' OR email LIKE '%" .$search2."%' OR plaats LIKE '%" .$search2."%' OR bedrijfsnaam LIKE '%" .$search2."%') ";
}
$query_where = (is_array($where))?" WHERE ".implode(" AND ", $where):"";
$result = mysql_query("SELECT * FROM klant ".$query_where." ORDER BY klant_id DESC");
您可以使用UNION
子句例如: First Query .. UNION Second Query .. :)
我相信你可以使用带括号的另一个OR运算符:
$result = mysql_query("
SELECT
*
FROM
klant
WHERE
(klant_id LIKE '%" .$search."%' OR
voornaam LIKE '%" .$search."%' OR
achternaam LIKE '%" .$search."%' OR
email LIKE '%".$search."%' OR
plaats LIKE '%" .$search."%' OR
bedrijfsnaam LIKE '%" .$search."%')
OR
(klant_id LIKE '%" .$search2."%' OR
voornaam LIKE '%" .$search2."%' OR
achternaam LIKE '%" .$search2."%' OR
email LIKE '%" .$search2."%' OR
plaats LIKE '%" .$search2."%' OR
bedrijfsnaam LIKE '%" .$search2."%')
GROUP BY
klant_id
ORDER BY
klant_id DESC");
但其他答案表明,UNION可能看起来更干净。
添加分组以防止同一结果多次显示。
if($_GET['search'] != ''){
$query1 = "SELECT * FROM klant WHERE klant_id LIKE '%" .$search."%' OR voornaam LIKE '%" .$search."%' OR achternaam LIKE '%" .$search."%' OR email LIKE '%".$search."%' OR plaats LIKE '%" .$search."%' OR bedrijfsnaam LIKE '%" .$search."%'ORDER BY klant_id DESC";
$query2 = "SELECT * FROM klant WHERE klant_id LIKE '%" .$search2."%' OR voornaam LIKE '%" .$search2."%' OR achternaam LIKE '%" .$search2."%' OR email LIKE '%" .$search2."%' OR plaats LIKE '%" .$search2."%' OR bedrijfsnaam LIKE '%" .$search2."%'ORDER BY klant_id DESC";
$result = mysql_query($query1 . ' UNION ALL ' . $query2;
$i = 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.