Php 用于从单个数据库中的多个表中进行选择的SQL查询

Php 用于从单个数据库中的多个表中进行选择的SQL查询,php,mysql,sql,database,join,Php,Mysql,Sql,Database,Join,我在数据库中有3个表(c19,c19b2,g26) 我想编写一个SQL查询来搜索和显示匹配记录的所有字段 我使用以下查询: $query = "SELECT * FROM c19,c19b2,g26 WHERE armyno LIKE '%$searchTerm%'"; 但它仅适用于表c19, 未从其他两个表中提取数据。每个表都有一个字段armyno 请帮我做这个 谢谢。您使用的是哪种数据库?这在SQL Server中是可行的。但是,请注意,您正在将每个记录交叉连接到每个记录。。。通常,您只希

我在数据库中有3个表(
c19
c19b2
g26

我想编写一个SQL查询来搜索和显示匹配记录的所有字段

我使用以下查询:

$query = "SELECT * FROM c19,c19b2,g26 WHERE armyno LIKE '%$searchTerm%'";
但它仅适用于表
c19
, 未从其他两个表中提取数据。每个表都有一个字段
armyno

请帮我做这个
谢谢。

您使用的是哪种数据库?这在SQL Server中是可行的。但是,请注意,您正在将每个记录交叉连接到每个记录。。。通常,您只希望通过限制匹配键来匹配某些记录,例如:

select 
  *
from a 
left join b on b.somekey = a.somekey
left join c on c.someotherkey = b.someotherkey 
在SQL server中,您可以只说*,但我认为在您的DB引擎中,这不起作用,所以请尝试指定哪个表。在某些环境中,这可能也需要别名:

select 
  a.*,
  b.*,
  c.*
from tableA as a 
left join tableB as b on b.somekey = a.somekey
left join tableC as c on c.someotherkey = b.someotherkey 
通常,对于给定行,您应该先看到第一个表中的列,然后是第二个表中的列,然后是第三个表中的列。如果您希望从所有表中分别获取所有列,那么将有3个单独的选择


最后,如果所有3个表都有“armyno”,那么我希望它抛出一个不明确的字段错误。在这种情况下,您需要指定要在哪个表的“armyno”字段上进行筛选。

好的,您找的不是
联接,而是
联合

SELECT * FROM c19 WHERE armyno LIKE '%$searchTerm%'
UNION
SELECT * FROM c19b2 WHERE armyno LIKE '%$searchTerm%'
UNION
SELECT * FROM g26 WHERE armyno LIKE '%$searchTerm%'

这将使您可以同时查询所有三个表。

感谢您提出的3个独立选择查询的想法:)成功了。请使用示例数据编辑您的问题,以及您希望得到的结果。您的模式设计可能会有所改进。