2010-11-23 17 views
0

私はFoxPro DBFデータベースに接続するためにOleDBを使用しています。私は列= key1またはkey2またはkey3 ...... key2000を持つすべての項目のテーブルを照会する必要があります。私が試したFoxpro SQLクエリ> 24基準

FoxProが明らかに長いクエリを好きではない

....両方:

where (col like "key1") or (col like "key2") or ..... (col like "key2000") 

where col in ("key1", "key2", "key3", "key4".... "key2000") 

最初のソリューションは、あまりにも複雑なクエリ」のために失敗しました" 2番目のキーは、範囲内の要素が多すぎると失敗します(明らかにmaxは24です)。これはばかばかしいようです...

複数の読み込みをせずにクエリを構築する方法はありますか?

ありがとうございました。

+0

FoxProのクエリの長​​さの制限を超えています。 OLEDB/ODBCエンジンは、FoxProデータエンジンの実際の軽量バージョンです(データエンジン以外のものはすべて削除されています)。クエリの長​​さの制限は、8k文字(私の頭の上から覚えていない)のような愚かなものです。見た目よりも大きい可能性が最も高いので、「クエリが複雑すぎます。 –

答えて

4
あなたはその

から一時テーブルまたは基準テーブル、クエリにあなたの基準をプッシュする必要があり

Create Table Criteria (
         UserSessionId ... 
         , KeyValue .... 
         ) 


Select ... 
From MyMainTable 
    Join Criteria 
     On Criteria.KeyValue = MyMainTable.col 
      And Criteria.UserSessionId = ... 
0

2つの可能性:

1)は、各

WHERE col IN (,,,,) OR col IN (,,,,) OR col IN (,,,) 
に24個の値を持つ句で複数を使用します

2)2000の値をコンマで区切った文字列に置き、

SELECT * FROM Table WHERE ?string LIKE '%'+col+'%'