2010-04-29 80 views
1

我有一個查詢:查詢有兩種不同的DSN

<asp:SqlDataSource runat="server" ID="SqlDataSource1" 
ConnectionString="Dsn=Xdb;uid=xxx;pwd=xxxxxxx" ProviderName="System.Data.Odbc" 
SelectCommand="SELECT XReqOrders.LoadNum, XReqOrders.StopSeq, XRecPkgs.DeliveryTime, 
XRecActivity.Address, XReqOrders.OrderOrTripOrRGA, XReqPkgs.Barcode, 
XReqPkgs.Description, XRecPkgs.IsDelivered, XRecPkgs.IsOnStop, YDelInfo.DeliveryDate 
FROM (((XReqOrders INNER JOIN XReqPkgs ON XReqOrders.LoadNumberOrderNumber = XReqPkgs.LoadNumberOrderNumber) 
LEFT JOIN XRecPkgs ON XReqPkgs.Barcode = XRecPkgs.Barcode) 
LEFT JOIN XRecActivity ON XRecPkgs.TranId = XRecActivity.TranId) 
INNER JOIN YDelInfo ON XReqOrders.OMID = YDelInfo.OMID 
ORDER BY XReqOrders.StopSeq, XRecPkgs.DeliveryTime">  
</asp:SqlDataSource> 

的「X」表是從一個數據源和「Y」表是從另一個...但有數據源之間的連接。我似乎無法弄清楚如何輸入兩個不同的連接字符串來運行。

的ConnectionString = 「DSN = XDB; UID = XXX; PWD = XXXXXXX」 的ProviderName = 「System.Data.Odbc」 的ConnectionString = 「DSN = YDB; UID = XXX; PWD = XXXXXXX」 的ProviderName =「System.Data .Odbc「

這是可能的......我只是想念什麼?

回答

3

您不能從兩個不同的數據庫連接表。根據您使用的數據庫引擎,您可以在一個數據庫中建立一個指向另一個數據庫中的表的「虛擬」或「鏈接」表,然後以這種方式進行JOIN。否則,您唯一的選擇是將您需要加入的表的副本製作到其他數據庫中,然後加入到副本中。

1

實際的數據庫查詢運行在服務器端,而不是客戶端,所以沒有「快捷」的方法來加入這兩個表。

可能的選項:

1)建立一個「鏈接服務器」(MSSQL來看,不能確定相應的任期將在MySQL或甲骨文的東西,或者即使他們支持)上的一個指向其他服務器的SQL服務器。

2)個人是否單獨選擇業務對象,然後在您的業務邏輯而不是數據庫中進行連接,要麼手動循環遍歷for循環中的記錄,要麼使用.NET中的LINQ技術。

+0

這就是我害怕...感謝您的幫助。 – morant 2010-04-29 13:56:56