2009-05-07 12 views
20

ruby​​ on railsチュートリアルを見ているうちに、次のテーブル構造が見つかりました。many-to-manyをクエリする方法は?

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

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

+0

コードサンプルをコードブロックに配置したい場合があります。コード行の各行の前に4つのスペースを置き、ブロックの前後に空白行を挿入します。 – bdonlan

答えて

12

一つのことは、あなたがロードしようとしているということです(理由は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 
23

たぶん、このような何か:

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' 
4

シンプル、ちょうど映画/俳優のテーブルを結合するために結合テーブルを使用します。考慮すべき

​​
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 
関連する問題