Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение 2-х таблиц по строковым полям, разной длины 
:(
    Опции темы
Oberon83
Дата 14.6.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: нет
Всего: 1



Нужно сделать такую вещь: есть 2 таблицы, в одной содержаться Улицы забитые пользователями, во второй Улицы эталонного справочника. Необходимо их сравнить с учетом того, что наименование Улицы в справочнике пользователей может быть не полным (сокращенным).
Как это сделать ума не приложу.

Запрос:
Код

SELECT string7 AS STREET, link AS LINK
        FROM SD_Conn_Points
        WHERE string10 IS NOT NULL
        AND string8 = '6'

Выводит Улицы, забитые пользователем + id этих записей.

Запрос:
Код

select T1.C_Name AS STREET_STANDART, T1.LINK AS STREET_LINK, T1.F_Parent AS PARENT_STREET_LINK
                from ss_locations T1 inner join ss_location_types T2 on T1.F_Location_Types = T2.LINK
                where T2.N_Level = 4 AND T2.N_Code = 6

Выводит Улицы эталонного справочника + id этих записей.


Нужно примерно следующее:
Код

SELECT STREET_STANDART.STREET_STANDART, STREET.LINK, STREET_STANDART.STREET_LINK, STREET_STANDART.PARENT_STREET_LINK
    FROM
        (SELECT string7 AS STREET, link AS LINK
        FROM SD_Conn_Points
        WHERE string10 IS NOT NULL
        AND string8 = '6') STREET
            INNER JOIN 
                (select T1.C_Name AS STREET_STANDART, T1.LINK AS STREET_LINK, T1.F_Parent AS PARENT_STREET_LINK
                from ss_locations T1 inner join ss_location_types T2 on T1.F_Location_Types = T2.LINK
                where T2.N_Level = 4 AND T2.N_Code = 6
                ) STREET_STANDART
                    ON STREET_STANDART.STREET_STANDART LIKE '''%' + STREET.STREET + '%'''
--                    ON STREET_STANDART.STREET_STANDART LIKE '%мира%' --Так все работает

Вся загвоздка в том, что STREET.STREET - динамическая переменная (т.е. если вместо этого поставить просто строковое значение (закомментированная), то запрос выполняется нормально) и так запрос не работает. Каким образом можно сделать запрос с аналогичным функционалом?
Заранее благодарен.

--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
ТоляМБА
Дата 15.6.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: нет
Всего: 252



Oberon83, ты будешь смеяться, но у тебя лишние кавычки, попробуй так:
Код
ON STREET_STANDART.STREET_STANDART LIKE '%' + STREET.STREET + '%'

(проверял на акцессе, MS SQL сервера под рукой не было)

PM   Вверх
Oberon83
Дата 18.6.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: нет
Всего: 1



ТоляМБА, Да нет, так тоже не пашет, пробовал. Т.е. запрос вроде выполняется, а на выходе 0, хотя если вместо STREET.STREET поставить хотя-бы одну текстовую запись, которую возвращает STREET.STREET, то все нормально работает. 
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
kobra
Дата 18.6.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



'N''%' + STREET.STREET + '%'''
а так?

PM MAIL   Вверх
vlksm
  Дата 19.6.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.6.2007

Репутация: нет
Всего: нет



Если поле SREET типа CHAR(к)  , а не VACHAR,то попробуйте заменить STREET.STREET на 
     rtrim(STREET.STREET) - т.е уберите правые пробелы.
         Соответстветственно  поступите и с _STANDART.

Добавлено через 1 минуту и 27 секунд
описка : VARCHAR(k)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.2004 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.