В трех таблиц:найти все ID имеющие все значения из другой таблицы
Actors:
+------------------+
| id_a | actor_name|
+------------------+
| 1 | AAA |
| 2 | Bbb |
| 3 | Ccc |
| 4 | Ddd |
| 5 | Eee |
+------------------+
Movies:
+----------------+
| id_m | mov_name|
+----------------+
| 1 | LoR |
| 2 | Thron |
| 3 | ZsT |
+----------------+
actors_in_movies:
+-------------+
| id_m | id_a |
+-------------+
| 1 | 1 |
| 1 | 3 |
| 1 | 5 |
| 2 | 1 |
| 2 | 3 |
| 3 | 2 |
| 3 | 3 |
| 3 | 4 |
| 3 | 5 |
+-------------+
можно написать один запрос, чтобы получить: все фильмы, где играют актеры из запроса?
Пример: SELECT id_m ГДЕ id_a В (1,3,4,5), должны дать:
+------+
| id_m |
+------+
| 1 |
| 2 |
+------+
однако .. ВЫБОР id_m WHERE id_a В (1,9) должен дать NULL.
Я попытался подобные запросы: Finding ID having all values (mySQL, SQL), писать что-то вроде:
SELECT id_m, count(*), group_concat(id_a) as all_act
FROM actors_in_movies
WHERE
id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 1)
AND
id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 3)
AND
id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 5)
GROUP BY (id_m)
HAVING count(*) <= 3
это показывают только один фильм (id_m: 1), , если я использую «OR» это почти нормально, , но это важно для меня чтобы получить все фильмы, где актеры из запроса играют, проголосовали за актеров или меньше, никогда фильмы, у которых есть актеры, пропущенные в запросе. Как это должно быть написано?
Подсказка: Используйте 'JOIN'. –