我有我的项目A与mySql数据库,我有另一个项目B与msSql。我已经从A连接数据库并从B中获取数据。但是现在我需要在A和B中使用内部连接来处理表。可以在同一台服务器和不同服务器上使用数据库吗?任何帮助将不胜感激。是否有可能从SQL和mySql中的具有数据库的内连接从不同的数据库获取信息?
在此先感谢
我有我的项目A与mySql数据库,我有另一个项目B与msSql。我已经从A连接数据库并从B中获取数据。但是现在我需要在A和B中使用内部连接来处理表。可以在同一台服务器和不同服务器上使用数据库吗?任何帮助将不胜感激。是否有可能从SQL和mySql中的具有数据库的内连接从不同的数据库获取信息?
在此先感谢
是的,应该有可能。首先,您需要将您的MySQL服务器链接到您的MS SQL Server。
请参阅this reference。其次,您可能需要使用子查询来选择正确的列并对它们进行连接;
SELECT *
FROM
(SELECT ms_column1, ms_column2 FROM MSSQLTABLE) AS mssql
JOIN
(SELECT my_column1, my_column2
FROM openquery(LINKED_SERVER, 'SELECT column1, column2 FROM MYSQLTABLE') AS mysql
ON mssql.ms_column1 = mysql.my_column1
不幸的是未经测试。
而不是使两个不同的数据库之间进行通信,您可以将通信的逻辑移动到编程层。例如,使用PDO和PHP,您可以连接到两个数据库,获取数据,混合并产生结果。您可以创建一个PHP类的抽象层,它独立于A或B数据库获取信息,稍后您将不再关心它,因为您将使用不直接与数据库结合的PHP对象。
这是一种有效的方法,通常易于实现。但是,在处理大表或复杂联接时可能会非常慢。如果两个数据库可以连接,它将有助于加快某些查询。想象一下,必须从一个数据库中提取一百万行并从另一个数据库中提取数千行,然后比较(JOIN)和过滤器(WHERE),以确定只需要显示几行。 – 2011-06-10 09:57:27
是真的。我只是提供替代品。 – 2011-06-10 10:23:14
另外,选择一个[有意义的名字](http://tinyurl.com/so-hints)有好处,比如[at-reply](http://meta.stackexchange.com/questions/43019/how -DO-评论,回复工作)。 – outis 2011-08-31 10:18:04