SQL-запрос Foxpro для> 24 критериев - PullRequest
0 голосов
/ 23 ноября 2010

Я использую OleDB для подключения к базе данных FoxPro DBF. Мне нужно запросить таблицу для всех элементов с column = key1 или key2 или key3 ...... key2000.

FoxPro явно не любит длинные запросы ....

Я пробовал оба:

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

и

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

Первое решение не подходит для «слишком сложного запроса». Второй ключ не работает для слишком большого числа элементов в диапазоне (по-видимому, максимальное значение равно 24). Это кажется абсурдным ...

Есть ли способ для меня построить свой запрос без многократных чтений?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 23 ноября 2010

Вам нужно поместить ваши критерии во временную таблицу или таблицу критериев и запросить из нее

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


Select ...
From MyMainTable
    Join Criteria
        On Criteria.KeyValue = MyMainTable.col
            And Criteria.UserSessionId = ...
0 голосов
/ 24 ноября 2010

Две возможности:

1) Использовать несколько предложений IN с 24 значениями в каждом

WHERE col IN (,,,,) OR col IN (,,,,) OR col IN (,,, )

2) Поместить значения 2000 в строку с разделителями-запятыми и использовать

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