如何查询多对多?

Moo*_*oon 30 mysql many-to-many

我在观看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
Run Code Online (Sandbox Code Playgroud)

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

我不是要求rails上的ruby代码.我想要实际的mysql查询字符串.

谢谢!

And*_*ite 38

也许是这样的:

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'
Run Code Online (Sandbox Code Playgroud)


fes*_*sja 17

要考虑的一件事是你要加载作者对象(因为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
Run Code Online (Sandbox Code Playgroud)

  • @Christiano 鉴于 StackExchange 的性质,“下一个答案”是未定义的。你指的是谁的答案? (2认同)

Jus*_*ier 7

很简单,只需使用组合表来连接movie/actor表:

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
Run Code Online (Sandbox Code Playgroud)