显示两个不同表中的所有列

Ind*_*dhi 3 sql sql-server join sql-server-2008

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

我在MovieDB中有两个表,电影和movie_actors.电影的ID是主键和idmovie_actor是外键和movies_actor.id被引用到movies.id

   TABLE MOVIES
   id/title/director/genre/year_of_release

   TABLE MOVIE_ACTOR
   id/title/actor/age
Run Code Online (Sandbox Code Playgroud)

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

我想在一张表中显示

   id/title/director/genre/year_of_release/actor/age 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Tar*_*ryn 5

您将需要在表上使用连接.联结将两个字段是主/外键,你说是彼此之间idmovie表和idmovie_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
Run Code Online (Sandbox Code Playgroud)

如果您不熟悉连接语法,那么联接的视觉解释很棒.

An INNER JOIN将返回两个表中匹配的记录集.如果movie表中的记录在表中没有匹配的记录move_actor,那么您可能希望使用a 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
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle和两个查询的演示.