1

我有一个查询:

<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"

这可能吗……我只是错过了什么吗?

4

3 回答 3

3

您不能 JOIN 来自两个不同数据库的表。根据您使用的数据库引擎,您可能能够在一个数据库中设置指向另一个数据库中的表的“虚拟”或“链接”表,并以这种方式执行 JOIN。否则,您唯一的选择是在另一个数据库中复制您需要 JOIN 到的表,然后 JOIN 到该副本。

于 2010-04-29T13:08:32.520 回答
1

实际的数据库查询是在服务器端运行的,而不是在客户端运行的,因此没有“快速简便”的方式来连接这两个表。

可能的选项是:

1)在一个指向另一台服务器的 SQL 服务器上设置“链接服务器”(MSSQL 术语,不确定 MySql 或 Oracle 中的相应术语是什么,或者即使它们受支持)。

2) 将个人选择分别放入业务对象中,然后在您的业务逻辑中而不是在数据库中进行连接,或者手动旋转 for 循环中的记录,或者利用 .NET 中的 LINQ 等技术。

于 2010-04-29T13:11:22.020 回答
0

正如其他人所说,您必须设置“链接服务器”

于 2014-03-24T13:34:36.347 回答