2011-06-10 47 views
3

我有我的项目A与mySql数据库,我有另一个项目B与msSql。我已经从A连接数据库并从B中获取数据。但是现在我需要在A和B中使用内部连接来处理表。可以在同一台服务器和不同服务器上使用数据库吗?任何帮助将不胜感激。是否有可能从SQL和mySql中的具有数据库的内连接从不同的数据库获取信息?

在此先感谢

+0

另外,选择一个[有意义的名字](http://tinyurl.com/so-hints)有好处,比如[at-reply](http://meta.stackexchange.com/questions/43019/how -DO-评论,回复工作)。 – outis 2011-08-31 10:18:04

回答

2

是的,应该有可能。首先,您需要将您的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 

不幸的是未经测试。

1

而不是使两个不同的数据库之间进行通信,您可以将通信的逻辑移动到编程层。例如,使用PDO和PHP,您可以连接到两个数据库,获取数据,混合并产生结果。您可以创建一个PHP类的抽象层,它独立于A或B数据库获取信息,稍后您将不再关心它,因为您将使用不直接与数据库结合的PHP对象。

+0

这是一种有效的方法,通常易于实现。但是,在处理大表或复杂联接时可能会非常慢。如果两个数据库可以连接,它将有助于加快某些查询。想象一下,必须从一个数据库中提取一百万行并从另一个数据库中提取数千行,然后比较(JOIN)和过滤器(WHERE),以确定只需要显示几行。 – 2011-06-10 09:57:27

+0

是真的。我只是提供替代品。 – 2011-06-10 10:23:14

相关问题