powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по INLIST()
7 сообщений из 7, страница 1 из 1
Вопрос по INLIST()
    #36892661
Mazurikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, столкнулся с непонятной ситуацией, прошу дать пояснения.
Вот в чем соль
Код: plaintext
1.
2.
3.
ldDate='02.09.10,02.10.10,04.10.10'
SELECT dt;
	FROM base;
	WHERE INLIST(dtoc(dt), ldDate );
выбирается только 02.09.10 первая дата по списку остальные игнорируются, пришлось плюнуть и вырезать и переводить каждую дату в тип date

Код: plaintext
1.
2.
3.
4.
5.
6.
ldDate1=CTOD('02.09.10')
ldDate2=CTOD('02.10.10')
ldDate3=CTOD('04.10.10')

SELECT dt;
	FROM base;
	WHERE INLIST(dt,ldDate1,ldDate2,ldDate3);

или сам текст ldDate разбить на
Код: plaintext
INLIST(dtoc(dt), '02.09.10','02.10.10','04.10.10' )
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892685
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вначале по-еврейски:
послушайте, а сделать список из дат невозможно?
зачем преобразовывать в условии запроса дату в строку?

что в инлисте не понятно?
должен быть список значений через строку, а не строка с разделителем запятая.
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892695
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если даты в строке то INLIST() тут не причем, так надо:
Код: plaintext
1.
2.
3.
ldDate='02.09.10,02.10.10,04.10.10'
SELECT dt;
	FROM base;
	WHERE dtoc(dt) $ ldDate
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892696
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если Вы не знаете кол-во значений в списке,
то проще сделать inner join c курсором-источником списка значений

в условиях ограничения (если возможно) старайтесь не делать преобразований полей источника - это аксиома.
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892701
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tесли даты в строке то INLIST() тут не причем, так надо:
Код: plaintext
1.
2.
3.
ldDate='02.09.10,02.10.10,04.10.10'
SELECT dt;
	FROM base;
	WHERE dtoc(dt) $ ldDate


не показывай такое больше.
функция в условии запроса - это зло,
особенно на пром.серверах.
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892725
Mazurikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо, спасибо за пояснение, а преобразование полей источника согласен, глупо... при огромных кол-вах записей выливается в ощутимую задержку
...
Рейтинг: 0 / 0
Вопрос по INLIST()
    #36892911
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mazurikusпрошелмимо, спасибо за пояснение, а преобразование полей источника согласен, глупо... при огромных кол-вах записей выливается в ощутимую задержку
Дело не столько в том, что функция вносит дополнительное время в запрос (хотя это тоже), а в том, что применив функцию в условии запроса, вы "убиваете" использование индекс по этому полю, даже если он и есть.
С уважением, Алексей
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по INLIST()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]