выборка по частичному совпадению значений из другой таблицы

Есть две таблицы. Основная и содержащая слова-исключения.

Первая основная (образно tab1)

Id | Title
1  | Яблоко красное
2  | Зеленое яблоко
3  | Спелый апельсин
4  | Желтый банан
5  | Киви зеленое

Вторая таблица tab2

Id | ExceptWord
1  | яблоко
2  | киви

Смысл запроса - вывести все записи столбца Title таблицы №1, кроме тех что совпадают частично со всем содержимым стоблца ExceptWord таблицы №2

Работает следующий запрос:

SELECT Title FROM tab1 WHERE Title NOT IN (SELECT ExceptWord FROM tab2)

Но он выводит только по точному совпадению всей фразы. Не могу додумать, когда прикрутить LIKE%%, чтобы в конечном итоге вернулись две записи "Спелый апельсин" и "Желтый банан".


Ответы (3 шт):

Автор решения: Антон
letters = []
letters2 = []
count = 0
for item in tab1[:]:
   for item2 in tab2[:]:
       for letter in str (item.title()):
           for letter2 in str (item2.title()):
                count += 1
                letters.append (letter)
                letters2.append (letter2)
                if count == len (str (item)):
                     count = 0
                     if not (letters == letters2):
                          print (item)
                          print (item2)

Попробуйте так. Не знаю,что получится!

→ Ссылка
Автор решения: gil9red

Думаю, примерно такой будет запрос sqlite:

SELECT Title FROM tab1
WHERE (SELECT count(*) FROM tab2 where lower(tab1.title) like '%' || lower(ExceptWord) || '%') = 0
→ Ссылка
Автор решения: Ainar-G

Как-то так:

SELECT *
  FROM t_1
 WHERE NOT EXISTS (
         SELECT *
           FROM t_2
          WHERE t_1.title LIKE ('%' || t_2.exceptword || '%')
       )
;

Не забывайте, что для поддержки русских букв должно быть загружено соотв. расширение и установлены прагмы.

→ Ссылка