web-dev-qa-db-ja.com

多対多のクエリ方法は?

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クエリ文字列が必要です。

ありがとうございました!

29
Moon

考慮すべきことの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
17
fesja

多分このようなもの:

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'
38
Andy White

単純です。結合されたテーブルを使用して、映画/俳優のテーブルを結合します。

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
7
Justin Ethier
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
2
razenha