【问题标题】:Search with multiple tables & ORDER BY php mysql搜索多个表 & ORDER BY php mysql
【发布时间】:2016-10-14 14:15:53
【问题描述】:

我有一个脚本,我想搜索多个表,我该怎么做。

**还在Mysql查询中添加ORDER BY函数** 感谢您的帮助。

 if(isset($_GET["search"]))  
                 {  
                      $condition = '';  
                      //$query = explode(" ", $_GET["search"]);
                      $query = explode(" ", $_GET["search"]);

                      foreach($query as $text)  
                      {  
                           $condition .= "title LIKE +'%".mysqli_real_escape_string($connect, $text)."%' OR ";  
                      }  
                      $condition = substr($condition, 0, -4);  
                      $sql_query = "SELECT * FROM countries WHERE " . $condition;  
                      $result = mysqli_query($connect, $sql_query);  
                      if(mysqli_num_rows($result) > 0)  
                      {  
                           while($row = mysqli_fetch_array($result))  
                           {  
                                echo '<tr><td>'.$row["title"].'</td></tr>';  
                           }  
                      }  
                      else  
                      {  
                           echo '<label>Data not Found</label>';  
                      }  
                 }  

【问题讨论】:

  • 使用union查询,或者分别查询每个表。
  • 你能写下@MarcB的语法

标签: php mysql search full-text-search


【解决方案1】:
SELECT * FROM (    

(SELECT title FROM countries WHERE title LIKE '%mystring%')
    UNION
    (SELECT title FROM locations WHERE title LIKE '%mystring%')

) ta

这是sql,但需要指出使用联合作为搜索工具的缺点。

a) 表格越长,搜索就越长,您可以在每个查询中添加限制,然后在整个联合中添加限制 - 但它不是赢家。

b) 表格列必须匹配,因此您可能需要将 myID 作为 ID,然后您需要一个额外的列来说明每个列是(0=国家,1= 位置)

c) 我猜您正在尝试进行某种网站搜索,在这种情况下,在这种情况下没有相关性。

因此,我会使用类似http://sphinxsearch.com/ 的东西开始使用有点棘手,但它是一个非常快速的搜索引擎。如果你有一个大网站。否则,请查看 mysql 全文搜索,它也具有相关性并且内置,因此更容易上手。

【讨论】:

  • 我使用 UNION 和 UNION ALL 但我的查询出现了一些错误@stackoverflow.com/users/4054808/richard-housham
  • 我做了一点修改,在桌子周围放置了一个“SELECT * FROM (query) ta”。或许能解决你的问题。老实说,我会提出疑问。回显出来。将粘贴复制到您的 phpMyAdmin(或其他)中,然后从那里进行调试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多