3

本当に気に入らない ASP.NET CMS 用のアプリケーションを再設計しています。この CMS が MS SQL を使用するだけでなく、MS Access データベースを「単純に」使用するユーザーもいることがわかりました。

問題は、内部結合するいくつかのテーブルがあり、MS Access バージョンでは 2 つの異なるファイルにあることです。テーブルを他の mdb ファイルに単純に移動することはできません。

私は今、複数のアクセス db ファイル間で「内部結合」する良い方法を見つけようとしていますか?

すべてのデータをフェッチしてプログラムで実行した場合、それは本当に残念です!

ありがとう

4

4 に答える 4

11

リンクされたテーブルはまったく必要ありません。リンクされたテーブルなしで使用できる異なる MDB からのデータを使用するには、2 つの方法があります。1 つ目は、SQL の FROM 句で "IN 'c:\MyDBs\Access.mdb'" を使用することです。保存したクエリの 1 つは次のようになります。

SELECT MyTable.*
FROM MyTable IN 'c:\MyDBs\Access.mdb'

他の保存されたクエリは次のようになります。

SELECT OtherTable.*
FROM OtherTable IN 'c:\MyDBs\Other.mdb'

これらのクエリを保存し、保存したクエリを使用して 2 つのテーブルを結合できます。

または、次のように FROM 句で各テーブルのソース MDB へのパスを指定することにより、単一の SQL ステートメントですべてを管理できます。

SELECT MyTable.ID, OtherTable.OtherField
FROM [c:\MyDBs\Access.mdb].MyTable 
  INNER JOIN [c:\MyDBs\Other.mdb].OtherTable ON MyTable.ID = OtherTable.ID

ただし、次の点に注意してください。

Jet クエリ オプティマイザーは、これらのテーブルのインデックスを結合に使用できるとは限りません (個々のフィールドの基準に使用するかどうかは別の問題です)。しかし、私はテストに大きなデータセットを使用していません)。ただし、そのパフォーマンスの問題は、リンクされたテーブルにも当てはまります。

于 2008-09-22T23:33:18.940 に答える
3

MDB にアクセスでき、それらを変更できる場合は、リンク テーブルの使用を検討してください。Access では、外部データ (他の MDB、Excel ファイル、さらには SQL Server または Oracle) にリンクする機能が提供され、リンクに対して結合を実行できます。

このようなオプションのパフォーマンス テストを強くお勧めします。Access データベースのユーザーを別のシステム (SQL Express を含む) に移行することが可能であれば、それも望ましいことです。最後に確認したところ、ODBC 用の 64 ビット JET ドライバーはもう存在しないため、アプリがこれまでホストされていた場合64 ビット環境では、これらのユーザーは不安になります。

于 2008-09-22T21:04:10.623 に答える
1

1 つのアクセス DB 内で、他の DB を指す「リンク テーブル」を作成できます。両方が同じDBに存在するかのように、テーブルにクエリを実行できるはずです(私はそう思います)。

仮想テーブルを作成するためにDBの1つを変更する必要があることを意味しますが、少なくとも実際にデータを移動するのではなく、データへのポインタを作成するだけです

于 2008-09-22T21:05:23.587 に答える
0

Access 内では、「リンク テーブル マネージャー」を使用してリモート テーブルを追加できます。いずれかの Access ファイルにリンクを追加することも、両方のファイルのテーブルを参照する新しい Access ファイルを作成することもできます。これが完了すると、内部結合クエリは、単一のデータベースで実行する場合と同じです。

于 2008-09-22T21:07:03.660 に答える