38

我在看 ruby​​ on rails 教程时发现了以下表格结构。

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

如何进行查询以选择演员参与的电影?

我不是要 ruby​​ on rails 代码。我想要实际的 mysql 查询字符串。

谢谢!

4

4 回答 4

51

也许是这样的:

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'
于 2009-05-07T02:05:31.773 回答
21

要考虑的一件事是您将加载作者对象(因为 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
于 2009-05-07T02:07:55.370 回答
9

很简单,只需使用组合表来加入电影/演员表:

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
于 2009-05-07T02:06:00.680 回答
2
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
于 2009-05-07T02:08:38.460 回答