我有我的項目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