Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Все вхождения одной строки в другую (запрос) / 7 сообщений из 7, страница 1 из 1
08.04.2004, 14:10
    #32473722
Bastard
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
Здравствуйте !
Есть две таблицы: Skmtr и Nom, в них есть поле inom1 - текстовое (char(50))
Мне нужно написать запрос, который бы выбирал все поля из Skmtr, где есть вхождения поля Nom.inom1
Т.е. это делается с оператором SQL - LIke с ключиком %, но вот куда его вставить этот ключик, как правильно написать запрос не знаю ((((
Подскажите очено пожалуйста !
...
Рейтинг: 0 / 0
08.04.2004, 14:29
    #32473781
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
например, так:

where Skmtr.inom1 like '%'+Nom.inom1+'%'

но можно и проще:

where Nom.inom1 $ Skmtr.inom1
...
Рейтинг: 0 / 0
08.04.2004, 15:13
    #32473907
Все вхождения одной строки в другую (запрос)
Только уж очень медленно работать будет...
...
Рейтинг: 0 / 0
08.04.2004, 15:47
    #32473987
Bastard
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
SELECT Skmtr.*;
FROM skmtr, wrong_all_numbers;
WHERE Skmtr.inom1 LIKE '%'+wrong_all_numbers.inom1+'%'

НЕ РАБОТАЕТ (((((

Может где ошибка закралась ???
...
Рейтинг: 0 / 0
08.04.2004, 16:28
    #32474072
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
А inom1 у тебя часом не число?
Like сравнивает строку со строкой, и не иначе!

Вот к примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create cursor a1 (inom c( 1 ))
create cursor a2 (inom c( 2 ))

SELECT a1
append blank
replace inom with '1'
append blank
replace inom with '2'

SELECT a2
append blank
replace inom with '01'
append blank
replace inom with '20'
append blank
replace inom with '03'
append blank
replace inom with '30'

SELECT a2.*; 
FROM a2, a1 ; 
WHERE a2.inom LIKE '%'+a1.inom+'%'

Возвращает, как и хотели, строки с inom = '10' и inom = '02'.
...
Рейтинг: 0 / 0
08.04.2004, 16:31
    #32474077
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
Т.е. '01' и '20', конечно ;-)
...
Рейтинг: 0 / 0
08.04.2004, 16:46
    #32474106
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все вхождения одной строки в другую (запрос)
Да, а еще, может быть, "не работает" - в смысле - возвращает больше записей, чем, якобы, должно?

Это если в моем примере сделать дополнительно:

Код: plaintext
1.
2.
3.
select a2
append blank
replace inom with '21'

и еще раз выполнить запрос -
так результат будет такой:

'01'
'21'
'20'
'21'

Т.е. '21' выберется 2 раза вместо одного?
Ну так ничего удивительного - в '21' входит и '1', и '2' - а условие связи отрабатывает совершенно правильно.
Добавь после select в свой запрос еще distinct - и заработает.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Все вхождения одной строки в другую (запрос) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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