0

だから私は私のデータベースで特定の列で同じ値を持つ2つのIDを見つけようとしています。

SELECT SALARY FROM TABLE1 WHERE ID='1'
INTERSECT
SELECT SALARY FROM TABLE2 WHERE ID='5'

だから私はVS2010でやった

Dim ConnectionString As String
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\\;Extended Properties=dBase  IV"
Dim dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString)
dBaseConnection.Open()
Dim myQ As String = "SELECT 'SALARY' FROM TABLE1 WHERE ID='1' INTERSECT SELECT 'SALARY' FROM TABLE2 WHERE ID='5'"
Dim dBaseCommand As New System.Data.OleDb.OleDbCommand(myQ, dBaseConnection)
Dim dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)

そして、最後の行が実行されると、このエラーが発生します

タイプ'System.Data.OleDb.OleDbException'の未処理の例外がSystem.Data.dllで発生しました
追加情報:IErrorInfo.GetDescriptionがE_FAIL(0x80004005)で失敗しました。

INTERSECTの代わりにUNIONを使うと信じられない

任意のアイデア、thx

4

2 に答える 2

2

dBase IV ファイルに Microsoft JET プロバイダーを使用しているように見えます。dBase と Microsoft Jet は intersect コマンドをサポートしていません。

于 2013-02-05T23:41:21.850 に答える
0

エラーを解決するために質問に正確に答えているわけではありませんが、とにかくこれはあなたがやろうとしていることの回避策かもしれません.

intersect を使用する代わりに、次のクエリを使用できます。

select salary
from Table1 inner join Table2 on Table1.Salary = Table2.Salary
where Table1.Id = '1' and Table2.Id = '5'
于 2013-02-05T23:43:56.653 に答える