Как запросить много-ко-многим?
Я обнаружил следующие структуры таблиц, когда я смотрел рубины на учебнике по рельсам.
table actors
id int 11 primary key auto_increment
name varchar 30
table movies
id int 11 primary key auto_increment
name varchar 30
table actors_movies
actor_id int 11
movie_id int 11
Как сделать запрос для выбора фильмов, в которые участвует актер?
Я не прошу использовать рубиновый код. Я хочу фактическую строку запроса mysql.
Спасибо!
Ответы
Ответ 1
нужно подумать, что вы собираетесь загрузить объект автора (из-за моделей RoR), поэтому с ID будет достаточно:
select movies.id, movies.name
from movies inner join actors_movies
on actors_movies.movie_id=movies.id
where actors_movies.actor_id=$actor_id
Ответ 2
Возможно, что-то вроде этого:
select m.name
from movies m
inner join actors_movies am on m.id = am.movie_id
inner join actors a on am.actor_id = a.id
where a.name = 'Christopher Walken'
Ответ 3
Простой, просто используйте комбинированную таблицу, чтобы присоединиться к таблицам фильмов/актеров:
Select m.name
From actors a
Inner Join actors_movies am On am.actor_id = a.id
Inner Join movies m On m.id = am.movie_id
Where a.name = @your_actor
Ответ 4
select m.* from movies m
inner join actors_movies am on am.movie_id = m.id
inner join actors a on a.id = am.actor_id
where a.someField = somevalue