【问题标题】:Search on multiple tables with different columns搜索具有不同列的多个表
【发布时间】:2014-08-08 14:02:58
【问题描述】:

我想为我的网站构建一个搜索引擎。我的数据库表列表如下:

  1. d_name:我需要搜索列。
  2. em:我需要在一个列上搜索。
  3. seri:我需要在一个列上搜索。
  4. topics:我需要在一个列上搜索。
  5. 许多其他表,它们的数量是动态的,列表包含在d_name 表的列中。我需要在这些表中的每一个上搜索 两个 列。

由于结果数量可能很大,所以我也需要进行分页。
据我所知,我应该使用UNION 以便在多个表上使用搜索分页,但首先,列数应该相同,但这里不是,而且我的表数也是动态的。

另一方面,如果我尝试使用SHOW TABLES,它还会搜索一些包含我的私人信息的其他表格。

这是我到目前为止所做的:

        $query = "(SELECT d_name, doc, db_name AS d FROM d_name WHERE d_name LIKE '%" . 
           $keyword . "%' OR title LIKE '%" . $keyword ."%') 
           UNION
           (SELECT em_name, db_name AS em FROM em WHERE em_name LIKE '%" . 
           $keyword . "%') 
           UNION
           (SELECT name AS topic FROM topics WHERE name LIKE '%" . 
           $keyword . "%')
           UNION
           (SELECT seri_name, db_name AS seri FROM seri WHERE seri_name LIKE '%" . 
           $keyword . "%')";

但是UNION 不起作用!有人知道我该怎么办吗?

【问题讨论】:

  • 你有没有尝试过同样的事情?请先开始尝试
  • 至少显示到目前为止你做了什么。当您在做某事时遇到问题时,Stackoverflow 会为您提供帮助。
  • 你是这个意思吗?

标签: php mysql database search


【解决方案1】:

如果您执行 UNION 查询,则所有单独的查询都应在结果中具有相同数量的列。您可以使用NULL'''not provided' 等固定值来填充其他表格。

示例查询 (demo)

SELECT column_1, column_2 FROM i_have_two_columns
UNION
SELECT column_1, NULL FROM i_have_only_one_column

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2016-01-29
    相关资源
    最近更新 更多