搜索具有不同列的多个表

时间:2014-08-08 14:02:58

标签: php mysql database search

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

  1. d_name:我需要搜索两个列。
  2. em:我需要搜索一个列。
  3. seri:我需要搜索一个列。
  4. topics:我需要搜索一个列。
  5. 许多其他表,其数量是动态的,列表包含在d_name表的列中。我需要在每个表上搜索两个列。
  6. 由于结果数量可能很大,我也需要进行分页 据我所知,我应该使用UNION来对多个表进行搜索时使用分页,但首先,列数应该相同,但这里不是,而且我的表的数量也是动态的。 / p>

    另一方面,如果我尝试使用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不起作用!有人知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

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

Examlpe-query(demo

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