3

如何将两个不同表的所有列显示为 ONE ?

我在 MovieDB 中有两个表,movies 和 movie_actors。电影的id为主键,电影的ididmovie_actor外键,movies_actor.id引用movies.id

   TABLE MOVIES
   id/title/director/genre/year_of_release

   TABLE MOVIE_ACTOR
   id/title/actor/age

我使用了联合,但它不起作用,因为联合要求相同数量的属性。但这里第一个表有 4 列,第二个只有 3 列。

我想在一张桌子上显示

   id/title/director/genre/year_of_release/actor/age 

有任何想法吗?

4

2 回答 2

5

您将希望在表上使用连接。联接将在作为彼此的主键/外键的两个字段之间进行,您所说的是id表中的movieid表中的movie_actor

select m.id,
  a.title,
  m.director,
  m.genre,
  m.year_of_release,
  a.actor,
  a.age
from movies m
inner join movie_actor a
  on m.id = a.id

如果您不熟悉连接语法,那么这里有一个很好的连接可视化解释

AnINNER JOIN将返回在两个表中匹配的记录集。如果表中的记录在movie表中没有匹配的记录move_actor,那么您需要使用LEFT JOIN. 即使表中没有记录,这也会返回所有电影movie_actor

select m.id,
  a.title,
  m.director,
  m.genre,
  m.year_of_release,
  a.actor,
  a.age
from movies m
left join movie_actor a
  on m.id = a.id

请参阅带有两个查询的演示的 SQL Fiddle 。

于 2012-12-06T10:44:12.720 回答
1

您可以使用以下查询连接这些表。

SELECT MOVIES.id, title, director, genre, year_of_release, actor, age
    FROM MOVIES INNER JOIN MOVIE_ACTOR ON (MOVIE.id = MOVIE_ACTOR.id)
于 2012-12-06T10:46:18.607 回答