Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询3个表,其中一个表具有不同的列名_Php_Mysql_Sql - Fatal编程技术网

Php SQL查询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% 及 我正在努力将这些问题结合起来。下面是我

我有三张桌子

项目、活动、客户

我需要返回searchterm匹配的所有3个表的结果。但是,我需要检查项目和活动表中的“名称”列,而不是客户表中的“说明”列。注意:这是一个现有的客户端数据库,我无权更改列名

示例:用户搜索“数据”,我需要选择:

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%;