@blainethemono

Как сравнить строку в left join 2 раза?

Всем привет.
Есть 2 таблицы, в names имена, в match - строки для сравнения имен. Нужно присоединить match к names по условию, что в имени будут содержаться слова из набора с приоритетом 1 И слова из набора с приоритетом 2.
Например, name = 'John Smith Good Guy'

Таблица match:
compare | priority
---------------------
good        | 1
guy          | 2
John        | 1
Smith      | 3

В результате мы должны получить
John Smith Good Guy | good
John Smith Good Guy | guy
John Smith Good Guy | John

Я попробовал такую конструкцию, но получаю compare = null
select n.name, m.compare from names n
 left join match m
  on  (n.name like '%' + m.compare+ '%' and m.priority = 1)
   and 
   (n.name like '%' + m.compare + '%' and m.priority = 2)


Кто-нибудь может помочь?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
У вас в операторе and взаимоисключающие условия "m.priority = 1" и "m.priority = 2"
(n.name like '%' + m.compare+ '%' and m.priority = 1)
and <--
(n.name like '%' + m.compare + '%' and m.priority = 2)
Используйте union
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы