使用mysql搜索多个表?

时间:2011-04-08 17:46:50

标签: php mysql search join

我有这个sql按条款获取帖子:

SELECT * FROM posts where content like '%" . $_GET['term'] . "%'"

但我希望一次搜索更多表格,如标签和用户。即。

SELECT * FROM users where username like '%" . $_GET['term'] . "%'"
SELECT * FROM topics where tag like '%" . $_GET['term'] . "%'"

我想知道如何将它们组合在一起进行查询。我知道你必须对As陈述做一些事情,即

content as Value
username as Value
tag as Value

我还想获得返回的查询类型,即如果返回的结果是用户,那将是TYPE用户,所以我可以区分它们。

2 个答案:

答案 0 :(得分:2)

一个简单的UNION ALL就足够了:

Select 'user' as hit_type, id from users where username like '%" . $_GET['term'] . "%'"
union all
Select 'topic' as hit_type, id FROM topics where tag like '%" . $_GET['term'] . "%'"

答案 1 :(得分:1)

你确定这是你想做的吗?即使您实现了这样的查询,您也会将香蕉与橙子混合在一起。您是否会向用户显示此内容,尽管它们彼此无关?

除了如何认为你能够以相关的方式对它们进行排序?我的意思是您可能希望按姓氏排序用户,但按日期排序主题。

只是我的想法,但我会去制作一个带有两个单独结果列表的结果页面(有两个查询): “我们在用户中找到了”..与用户查询匹配的用户列表, “我们在帖子中找到了”..与查询匹配的帖子列表。

为了确保您了解它,不要忘记出于安全原因在将查询字符串变量发送到查询之前将其转义:

SELECT * FROM users where username like '%" . mysql_real_escape_string($_GET['term']) . "%'"