Присоединитесь к запросу, чтобы получить записи, соответствующие 2 значениям в одном столбце - PullRequest
0 голосов
/ 16 декабря 2018

Итак, у меня есть таблица фильмов (movie), таблица категорий (cat) и таблица их отношений (movie_cat).
Таблица "movie" имеет значения

id  label     
1   Ironman   

"таблица "cat" имеет значения

id  label      value
1   Genre      Action
2   Language   English

Таблица "movie_cat" имеет значения

id  movie_id  cat_id
1     1           1
2     1           2

Мне нужен запрос, который может дать мне список фильмов, которые находятся в "Действие"Категория "и" английский ".

1 Ответ

0 голосов
/ 16 декабря 2018

Прямой подход:

select *
from movie
where id in 
  (select movie_id from movie_cat where cat_id = 
    (select id from cat where label = 'Genre' and value = 'Action'))
and id in
  (select movie_id from movie_cat where cat_id =
    (select id from cat where label = 'Language' and value = 'English'));

Агрегационный подход:

select *
from movie
where id in 
(
  select movie_id
  from movie_cat 
  where cat_id in (select id from cat where (label, value) in (('Genre', 'Action'),
                                                               ('Language', 'English'))
  group by movie_id
  having count(*) = 2
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...