如何将两个不同表的所有列显示为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
任何想法?
答案 0 :(得分:5)
您需要在表格上使用连接。连接将位于两个字段之间,这两个字段是彼此的主键/外键,您声明的是id
表中的movie
和id
表中的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)