如何跨两个表实现搜索查询?

时间:2014-09-23 10:43:48

标签: php mysql

我正在为我的网页实施一个非常简单的搜索功能。有一个表名称任务有4列感兴趣:名称,descritption,状态(最后一个是多选,有三个可能的选择)和用户名。

所以我这样做了搜索:

SELECT * FROM tasks WHERE ((description LIKE '%search_val%' OR name LIKE '%search_val%') AND status='selected_status')

出于所有意图和目的,这是有效的。但是现在我意识到我想要用户输入的搜索模式(上面的句子在PHP代码中执行)也能够搜索不同表的列名和姓:table users。如果有用户名的任务(两个表共有的字段),那么也是查询的结果。

所以说,用户在搜索框中输入John。我想显示任何带有用户名的任务,用户将John作为姓氏或名字,并在说明或任务名称中显示包含John的任何任务。

我如何为此编写查询?

1 个答案:

答案 0 :(得分:0)

使用JOIN关联userstasks表,并将这两个查询与UNION

合并
SELECT *
FROM tasks
WHERE description LIKE '%search_val%' OR name LIKE '%search_val%'

UNION

SELECT t.*
FROM tasks AS t
JOIN users AS u ON t.username = u.username
WHERE u.name LIKE '%search_val%' OR u.lastname LIKE '%search_val%'