【发布时间】:2014-03-21 17:30:22
【问题描述】:
我有两个具有相同架构的数据库。我需要在两个表上执行连接才能获得页面结果。 我对加入数据库一无所知。更重要的是,因为我现有的查询已在第一个数据库中加入。
这是我的查询:
$base = mysql_query("SELECT DISTINCT page.path,
page.site_id,
(SELECT metadata_custom.value
FROM metadata_custom
WHERE field = 'academic search title'
AND page.id = metadata_custom.page_id) AS value,
page.id
FROM page
INNER JOIN metadata
ON page.metadata_id = metadata.id
INNER JOIN metadata_custom
ON page.id = metadata_custom.page_id
WHERE field = 'academic search keywords'
AND value LIKE 'undergraduate%'
ORDER BY value ");
我需要相同的结果,但是在第一个数据库与第二个数据库连接之后。有什么指点吗?
更新:这里有两个连接,具有相同的主机和不同的用户名和密码。虽然我没有收到任何连接错误,但脚本没有返回任何内容。这里一定有错误吗:
$base = mysql_query("select distinct page.path,page.site_id,
(select metadata_custom.value from db1.metadata_custom where field='academic search title' and page.id=metadata_custom.page_id)
AS value,
page.id from db1.page inner join db1.metadata on db1.page.metadata_id=db1.metadata.id inner join db1.metadata_custom on db1.page.id=db1.metadata_custom.page_id where field='academic search keywords' and
value like 'undergraduate%'
UNION
select distinct page.path,site_id,(select metadata_custom.value from metadata_custom where field='academic search title' and page.id=metadata_custom.page_id) AS value,
page.id from db2.page inner join db2.metadata on db2.page.metadata_id=db2.metadata.id inner join db2.metadata_custom on db2.page.id=db2.metadata_custom.page_id where field='academic search keywords' and
value like 'undergraduate%'
ORDER BY value", $connection);
db1和db2是这里的两个数据库
我使用相同的连接链接,因为我在某处读到它连接到服务器并且可用于访问同一服务器上的任何数据库。
感谢您的帮助和时间,非常感谢。
【问题讨论】:
-
我很好奇您所说的 “合并” 表是什么意思?
-
我的错,我的意思是加入数据库。
-
您是否尝试过对两个数据库使用相同的查询,并使用
UNION“加入”结果? -
我没有,我会尽力回复你。谢谢你的想法。
-
JOIN跨多个数据库(在同一服务器上)的表的唯一技巧是,您必须在每个表名前显式地添加数据库名称,例如SELECT ... FROM database_A.table_A AS A JOIN database_B.table_B AS B;而不是USE database_A; SELECT ... FROM table_A AS A JOIN table_B AS B;。