2009-05-07 6 views
20

Ben raylar öğretici üzerinde ruby ​​izlerken iken aşağıdaki tablo yapıları bulundu.Çoktan çoğa nasıl sorgulanır?

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 

Bir aktörün içerdiği filmleri seçmek için nasıl sorgu yapabilirim?

Raylar kodunda ruby ​​istemiyorum. Ben gerçek mysql sorgu dizesini istiyorum.

Teşekkür ederiz!

+0

Kod örneğinizi bir kod bloğuna koymak isteyebilirsiniz - her satırdan önce dört boşluk koyun ve bloktan önce ve sonra boş bir satır yerleştirin. – bdonlan

cevap

12

bir şeydir yazar nesne, bu kadar kimliği yeterli olacağını (KO modellerin çünkü):

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
böyle

Belki bir şey:

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

Basit, sadece film/aktör tabloları birleştirmek için kombine tabloyu kullanın: Yüklemek gidiyoruz dikkate

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