Php SQL查询3个表,其中一个表具有不同的列名
我有三张桌子 项目、活动、客户 我需要返回searchterm匹配的所有3个表的结果。但是,我需要检查项目和活动表中的“名称”列,而不是客户表中的“说明”列。注意:这是一个现有的客户端数据库,我无权更改列名 示例:用户搜索“数据”,我需要选择:Php SQL查询3个表,其中一个表具有不同的列名,php,mysql,sql,Php,Mysql,Sql,我有三张桌子 项目、活动、客户 我需要返回searchterm匹配的所有3个表的结果。但是,我需要检查项目和活动表中的“名称”列,而不是客户表中的“说明”列。注意:这是一个现有的客户端数据库,我无权更改列名 示例:用户搜索“数据”,我需要选择: name as title FROM projects WHERE name LIKE %data%, name as title FROM campaigns WHERE name LIKE %data% 及 我正在努力将这些问题结合起来。下面是我
name as title FROM projects WHERE name LIKE %data%,
name as title FROM campaigns WHERE name LIKE %data%
及
我正在努力将这些问题结合起来。下面是我到目前为止得到的结果,它返回了一个语法错误。我还认为我可能采取了错误的方法
SELECT
p.name,
c.name,
cl.description AS title
FROM
projects,
campaigns,
clients
WHERE
p.name LIKE % DATA %
OR c.name LIKE % DATA %
OR cl.description LIKE % DATA %
您要查找的是
union all
:
SELECT name as title FROM projects WHERE name LIKE %data%,
UNION ALL
SELECT name as title FROM campaigns WHERE name LIKE %data%
UNION ALL
SELECT description as title FROM clients WHERE description LIKE %data%;
如果要删除重复项,请使用
UNION
而不是UNION ALL
检查此答案:检查解决方案的给定链接是否可能重复都德不要这样做。请将整个表数据带到代码中,在每次粗略操作时更新它,然后在那里处理搜索以获得更好的性能。因此,为了实现此查询,您对表之间可能存在的任何关系都不感兴趣。谢谢-重复表示将在两个或多个表中返回的实际结果相同?@CIvemy。如果要确保结果集中的name
不重复,请使用union
。如果您知道没有重复项或需要重复项,请使用union all
。
SELECT name as title FROM projects WHERE name LIKE %data%,
UNION ALL
SELECT name as title FROM campaigns WHERE name LIKE %data%
UNION ALL
SELECT description as title FROM clients WHERE description LIKE %data%;