sql / mysql вычесть набор ключевых слов из результатов - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть таблица MOVIES, в которой есть следующие поля: genre и classification.Я ищу все боевики, но НЕ анимированные.

Каждая строка содержит все классификации, например, строка выглядит так:

Action,thriller,animated-action,movie
SELECT * FROM movies 
WHERE $email_filter 
concat( movies.genre,  movies.classification) like '%Action%' 
AND NOT LIKE '%Animated-Action%' 

Вот чтоЯ старался.Возвращает 0 результатов.Любая помощь будет оценена спасибо

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

Попробуйте этот запрос -

SELECT * FROM movies
WHERE
  FIND_IN_SET('Action', classification) AND NOT FIND_IN_SET('Animated-Action', classification);

Кроме того, я бы предложил вам нормализовать данные.

0 голосов
/ 03 февраля 2012

надеюсь, что это поможет

select * from  
 (SELECT *,concat( movies.genre,  movies.classification) as s 
 FROM movies WHERE $email_filter AND
 concat( movies.genre,  movies.classification) like '%Action%') as b 
 WHERE s not like '%Animated-Action%'
0 голосов
/ 03 февраля 2012

но это правильно. строка выше «Действие, триллер, анимационное действие, фильм» не должна возвращаться, поскольку она похожа на «% Animated-Action%».

Если у вас есть строка типа «Действие, триллер, боевик, фильм», она будет возвращена.

Можете ли вы показать пример строки, которая, по вашему мнению, должна быть возвращена, но это не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...