2009-05-07 26 views
20

Encontré las siguientes estructuras de tablas mientras estaba viendo el tutorial de ruby ​​on rails.cómo consultar muchos a muchos?

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 

¿Cómo hago una consulta para seleccionar las películas en las que está involucrado un actor?

No estoy pidiendo el código Ruby on Rails. Quiero la cadena de consulta mysql real.

¡Gracias!

+0

Puede poner su muestra de código en un bloque de código: simplemente coloque cuatro espacios antes de cada línea y coloque una línea en blanco antes y después del bloque. – bdonlan

Respuesta

12

una cosa a considerar es que se va a cargar el autor objeto (debido a modelos ROR), así que con el ID sería suficiente:

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

Tal vez algo como esto:

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

simple, sólo tiene que utilizar la tabla combinada para unirse a las tablas de la película/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 
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 
Cuestiones relacionadas