2011-11-04 37 views
0

我有2個eccomerce網站,它們具有幾乎相同的產品數據庫。我想將產品表託管在一個單獨的數據庫中,以供2個電子商務網站共享。1個查詢中的2個數據庫

我試圖一次連接到2個獨立的數據庫,但無法讓它工作。

我使用plesk,在同一個用戶下有多個數據庫的唯一方法是在服務器上手動設置它,但我無法弄清楚。

我理想中的數據庫設置會...

Site A: 
shared_db (products) 
db_A (orders, customers, etc...) 

Site B: 
shared_db (products) 
db_B (orders, customers, etc...) 

最新最好的方式去嗎?

服務器:PHP 5.3,IIS7,PLESK,godaddy專用服務器。

回答

1

這一切取決於您使用的數據庫連接是否可以訪問其他數據庫。如果是的話那麼你可以簡單地參照其他數據庫(跨數據庫連接)以下列方式(以下查詢僅用於示範的目的,在架構猜測):

SELECT products.*, orders.*, customers.* FROM shared_db.products INNER JOIN db_B.orders on orders.product_id = products.id INNER JOIN db_B.customers on customers.id = orders.customer_id WHERE products.id = ? 

如果你的數據庫連接不有權訪問其他數據庫,那麼你將不得不發出兩個查詢,並在應用層組合它們。

+0

是的,他們是單獨的連接,所以上述不會工作 – tuurbo

+0

你的建議很有意義,但確實在應用層做了更多的工作。您將不得不發出兩個查詢,每個數據庫一個查詢,然後按結果來滿足您的需求。此鏈接也可能有一些用處:http://www.mysqlperformanceblog.com/2009/08/06/why-you-dont-want-to-shard/ –

0

你正在使用什麼數據庫?如果您使用的是MSSQL,則可能需要進入主數據庫並啓用交叉數據庫保留。它默認是禁用的。您可能還需要在輔助數據庫的查詢中定義主數據庫的完全驗證名稱。如果您需要進一步澄清,請告訴我。