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

时间:2012-12-06 10:40:37

标签: sql sql-server sql-server-2008 join

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

我在MovieDB中有两个表,电影和movie_actors。电影的ID是主键,id的{​​{1}}是外键,movie_actor被引用到movies.id

movies_actor.id

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

我想在一个表格中显示

   TABLE MOVIES
   id/title/director/genre/year_of_release

   TABLE MOVIE_ACTOR
   id/title/actor/age

任何想法?

2 个答案:

答案 0 :(得分: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

如果您不熟悉连接语法,那么visual explanation of joins很好。

INNER 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 with Demo

答案 1 :(得分:1)

您可以使用以下查询加入这些表。

SELECT MOVIES.id, title, director, genre, year_of_release, actor, age
    FROM MOVIES INNER JOIN MOVIE_ACTOR ON (MOVIE.id = MOVIE_ACTOR.id)