Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 从两个不同的表中查询同一字段_Php_Mysql_Sql - Fatal编程技术网

Php 从两个不同的表中查询同一字段

Php 从两个不同的表中查询同一字段,php,mysql,sql,Php,Mysql,Sql,我在尝试查询3个表和2个具有相同字段的表时遇到了问题。使用php和mysql 范例 表 表B 表C 查询中的关键字将是搜索词 SELECT title FROM TableA as A LEFT JOIN TableC as C ON TableA.id=TableC.id WHERE 1 AND TableC.private='0' AND ( title LIKE '".$keyword."%' OR title LIKE

我在尝试查询3个表和2个具有相同字段的表时遇到了问题。使用php和mysql

范例

表 表B 表C

查询中的关键字将是搜索词

SELECT 
   title 
FROM TableA as A 
LEFT JOIN TableC as C 
   ON TableA.id=TableC.id 
WHERE 1 
   AND TableC.private='0' 
   AND ( 
        title LIKE '".$keyword."%' 
     OR title LIKE '%".$keyword."%' 
     OR title LIKE '%".$keyword."' 
     OR title = '".$keyword."' 
   )
我遇到的问题是,我还需要同时在TableB中搜索标题,并根据相同的关键字进行匹配。如何将TableB标题字段合并到查询中

因此,如果有title=America的TableA和title=American的TableB,它将显示两个表的两个结果,因为它将匹配类似的查询

然后用PHP显示结果。如果表A或表B匹配,则显示该结果。并在阵列中循环等

它必须在查询中,因为我将它用作搜索参数

TIA

建立联盟:

SELECT title FROM TableA as A LEFT JOIN TableC as C ON TableA.id=TableC.id WHERE 1 AND TABLEC.private='0' AND ( title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
             OR title LIKE '%".$keyword."' OR title = '".$keyword."' )
UNION
SELECT title FROM TableB as B LEFT JOIN TableC as C ON TableB.id=TableC.id WHERE 1 AND TABLEC.private='0' AND ( title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
             OR title LIKE '%".$keyword."' OR title = '".$keyword."' )
做一个工会:

SELECT title FROM TableA as A LEFT JOIN TableC as C ON TableA.id=TableC.id WHERE 1 AND TABLEC.private='0' AND ( title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
             OR title LIKE '%".$keyword."' OR title = '".$keyword."' )
UNION
SELECT title FROM TableB as B LEFT JOIN TableC as C ON TableB.id=TableC.id WHERE 1 AND TABLEC.private='0' AND ( title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
             OR title LIKE '%".$keyword."' OR title = '".$keyword."' )

好的,我认为工会必须在表中有相同的列。我试试看。哦,是的,那不行,因为TableB没有TableA的ID表。所以我不能做同样的查询。它们不是相同的表。假设一张桌子是放歌曲的桌子,另一张桌子是放收藏夹的桌子。两者都有标题字段,可以有不同的数据。如果有匹配项,我希望它显示歌曲标题或收藏夹标题,或者显示匹配项的数量。联合中的每个查询必须具有相同的列数,每个对应列的数据类型相同。其他一切都是有效的。因此,您必须根据需要修改TableB上的查询,但这应该仍然有效。谢谢,我认为这样做了。我以前从未使用过联合,主要是加入,但这确实很有帮助。它得到了我需要的东西。太棒了。好吧,我认为工会必须在表格中有相同的列。我试试看。哦,是的,那不行,因为TableB没有TableA的ID表。所以我不能做同样的查询。它们不是相同的表。假设一张桌子是放歌曲的桌子,另一张桌子是放收藏夹的桌子。两者都有标题字段,可以有不同的数据。如果有匹配项,我希望它显示歌曲标题或收藏夹标题,或者显示匹配项的数量。联合中的每个查询必须具有相同的列数,每个对应列的数据类型相同。其他一切都是有效的。因此,您必须根据需要修改TableB上的查询,但这应该仍然有效。谢谢,我认为这样做了。我以前从未使用过联合,主要是加入,但这确实很有帮助。它得到了我需要的东西。太棒了。请去阅读并准备好声明。还有买/偷你自己的书。@tereško我还得看更多的SQL教程。我需要更多的帮助,而不是PHP。请去读一读并准备好声明。还有买/偷你自己的书。@tereško我还得看更多的SQL教程。我需要更多的帮助,而不是PHP。谢谢