我在数据库中有3个表(c19
,c19b2
,g26
)
我想编写一个SQL查询来搜索并显示匹配记录的所有字段。
我正在使用以下查询:
$query = "SELECT * FROM c19,c19b2,g26 WHERE armyno LIKE '%$searchTerm%'";
但它只适用于表c19
,
不会提取其他2个表中的数据。每个表都有一个字段armyno
请帮我解决这个问题 谢谢。
答案 0 :(得分:1)
好的,您不是在寻找JOIN
,而是UNION
。
SELECT * FROM c19 WHERE armyno LIKE '%$searchTerm%'
UNION
SELECT * FROM c19b2 WHERE armyno LIKE '%$searchTerm%'
UNION
SELECT * FROM g26 WHERE armyno LIKE '%$searchTerm%'
这将允许您同时查询所有三个表。
答案 1 :(得分:0)
您使用的是哪个数据库?这可以在SQL Server中使用。但是,请注意您正在对每条记录进行交叉连接...通常您只想通过限制匹配键来匹配某些记录,例如:
select
*
from a
left join b on b.somekey = a.somekey
left join c on c.someotherkey = b.someotherkey
在SQL服务器中你可以说*,但是我在你的数据库引擎中没有使用它,所以尝试指定哪个表。在某些环境中,这可能也需要别名:
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”字段。