Re: Inner join не срабатывает | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
(Или во "всеми" нелюбимом COLLATE=RUSSIAN)
|
Re: Inner join не срабатывает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не вижу каким образом эта настройка сама по себе может повлиять на разное поведение
------------------ WBR, Igor |
Re: Inner join не срабатывает | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Вобщето, без COLLATE=RUSSIAN Л от л НИКАКОЕ преобразование отличить не может
|
Re: Inner join не срабатывает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Олег, давай вернёмся к самому началу. У автора вопроса вариант t1.fld1+t1.fld2=t2.fld1+t2.fld2 (1) работал ОТЛИЧНО от варианта t1.fld1=t2.fld1 AND t1.fld2=t2.fld2 (2)
Ну и каким боком к этому установка SET COLLATE? Если бы у неё была проблема именно с этим - с регистром строк, то замена (1) на (2) ровным счётом ничего бы не изменила. Как "не работало" оно, так бы и продолжало "не работать". ------------------ WBR, Igor |
Re: Inner join не срабатывает | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Я понял так, что у автора в конце концов работают оба варианта одинаково. Что-то с синтаксисом (точка с запятой) нелады были что-ли. Идею твою наконец понял, что в одном случае индекс используется, а в другом нет. Ранее (с одним полем) все работало, значит индекс по имени улицы использовался (если он есть) и исправен. При добавлении второго поля (поле1+поле2) вроде перестало работать, индекс в этом случае не используется (хотя хз, фокс может и сообразил как использовать индекс по имени улицы...). Также мы не знаем, есть ли индекс по номеру дома, и исправен ли он... Вобщем ситуация неясна.
Про COLLATE=RUSSIAN - да, он или есть, и применяется в коде проги, или не есть, и прога на него не расчитывает (скорее вариант 1). Но это мой любимый COLLATE, и меня на нем "зарубает время от времени" |
Re: Inner join не срабатывает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По умолчанию после установки фокса стоит COLLATE=MACHINE, потому смею предположить что у 90% пользователей фокса используется именно MACHINE.
А для решения проблем регистра букв издавна применяли UPPER(выражение) - в некотором отношении это даже лучше чем COLLATE=RUSSIAN (ну как минимум размеры индексов по строковым полям заметно меньше будут). А главное что это очевидное, прямое решение - где надо ставим UPPER, где не надо - не ставим. В отличие от "скрытой" COLLATE которая работает везде, и если и меняется, то никак не в том же самом месте где прописан оператор сравнения (не в самом запросе, не в IF-e). ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 22.10.17 13:15 |
Re: Inner join не срабатывает | |
---|---|
Foxtrot Сообщений: 3408 Откуда: Куда: Дата регистрации: 25.04.2003 |
у горячих финских парней вотка закончилась?
------------------ Мойте ноги, моя ноги вы моете и руки |
© 2000-2024 Fox Club  |