Как получить список фильмов по жанру и языку - PullRequest
1 голос
/ 01 апреля 2019

Я застрял, чтобы получить список фильмов, основанных на жанре и языке.

Вот моя структура базы данных:

    movies table
-----------------------
id | title|
----------------------
1  | ABC
2  | PQR
3  | MNC
category table
-----------------------
id | catgory  | value
----------------------
1  | language |Hindi
2  | language |Endilish
3  | genre    |Drama
4  | genre    |Action
5  | genre    |Thriller
manage table
-----------------------
id|catgory_id|movie_id
----------------------
1  |     1   |  1
2  |     3   |  1
3  |     4   |  1
4  |     2   |  2
5  |     4   |  2

Вот что я пытаюсь сделать: хочу фильмы на языке хинди с жанром экшн.

Ниже мой запрос:

SELECT * 
FROM manage 
WHERE category_id='1' AND category_id='4' 
GROUP BY movie_id

Я ожидал результата фильмов на хинди с жанром экшн, но он возвращает нулевой результат.

Но когда я использую оператор OR в запросе, он возвращает результат, но с фильмами, в которых также есть язык английский, но ожидается язык Хинди и Жанр Действие .

Куда я иду не так?

1 Ответ

1 голос
/ 01 апреля 2019

Вот одно решение, которое использует агрегирование:

SELECT m.id, m.title
FROM movie m
INNER JOIN manage a   ON a.movie_id = m.id
INNER JOIN category c ON a.category_id = c.id
GROUP BY m.id, m.title
HAVING 
    MAX(c.category = 'language' AND c.value = 'Hindi') = 1
    AND MAX(c.category = 'genre' AND c.value = 'Action') = 1

Это демонстрация на DB Fiddle с вашими примерами возвращаемых данных:

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