我写了下面的查询:
select film_id, actor_id
from sakila.film_actor
where film_id IN (
select film_id from sakila.film
)
返回
film_id actor_id
1 1
1 10
1 20
....
2 19
2 85
但是我还想在这个结果集中包括电影的名字和演员的名字。
电影名称在电影表中,演员的姓和名在演员表中。
表的结构如下:
Table Columns
actor actor_id, first name, last name
film film_id, title
film_actor actor_id, film_id(foreign keys to film and actor table)
我尝试了以下查询:
select ac.actor_id, ac.first_name, ac.last_name, fm.title from sakila.film_actor as fa inner join sakila.actor ac on fa.actor_id = ac.actor_id inner join sakila.film fm on fa.film_id = fm.film_id;
但是这个返回的是每个演员的所有电影列表,而我希望反过来。每部电影的所有演员
使用内部连接
select f.film_id, a.actor_id, f.film_name, a.first_name, a.last_name
from sakila.film_actor a
inner join sakila.film f
on a.film_id = f.film_id
当然,您必须使用模式中的实际字段名。(我猜是film_name
,first_name
和last_name
)