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」テーブルは別のデータ ソースからのものですが、データ ソース間には結合があります。これを実行するために 2 つの異なる接続文字列を入力する方法がわかりません。

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

2 つの異なるデータベースのテーブルを結合することはできません。使用しているデータベース エンジンによっては、一方のデータベースに、他方のデータベースのテーブルを指す「仮想」テーブルまたは「リンク」テーブルを設定し、その方法で JOIN を実行できる場合があります。それ以外の場合、唯一の選択肢は、結合する必要があるテーブルのコピーを他のデータベースに作成し、そのコピーに結合することです。

于 2010-04-29T13:08:32.520 に答える
1

実際のデータベース クエリは、クライアント側ではなくサーバー側で実行されるため、2 つのテーブルを結合する「すばやく簡単な」方法はありません。

可能なオプションは次のとおりです。

1)他のサーバーを指すSQLサーバーの1つに「リンクサーバー」(MSSQL用語、MySqlまたはOracleで対応する用語が何であるか、またはそれらがサポートされているかどうかはわかりません)をセットアップします。

2) 個々の選択をビジネス オブジェクトに個別に行い、データベースではなくビジネス ロジックで結合を行います。for ループでレコードを手動でスピンするか、.NET で LINQ などのテクノロジを利用します。

于 2010-04-29T13:11:22.020 に答える