如何使用具有特定名称的MySQL连接数据库中的两个表

时间:2016-07-25 19:19:51

标签: mysql database join

我在xampp中使用mysql有一个电影数据库。 它有3个表

movies(movieid(PK), title, rating, genre, release_date), actors(actorid(PK), firstname,lastname,gender, date_of_birth), and actorsmovies(actorid(PK),movieid(pk).

我必须显示Michael J. Fox扮演演员的电影中的所有字段。我如何加入这两张桌子,只会向我展示michael j fox所在的电影?演员电影有限制。

示例:我尝试了一百万种组合,但这只是一个例子

select firstname,lastname,title from actors where firstname,lastname = 'Michael J','Fox' join actorsmovies on actors.actorid = actorsmovies.actorid join movies on actorsmovies.movieid = movies.movieid;

1 个答案:

答案 0 :(得分:0)

你有

select firstname,lastname,title 
from actors 
  where firstname,lastname = 'Michael J','Fox' 
join actorsmovies 
  on actors.actorid = actorsmovies.actorid 
join movies on actorsmovies.movieid = movies.movieid;

你需要

select firstname,lastname,title 
from actors 
join actorsmovies 
  on actors.actorid = actorsmovies.actorid 
join movies on actorsmovies.movieid = movies.movieid
where firstname = 'Michael J' and lastname 'Fox';

简单地说,where子句必须在连接之后和group by by by之前。我还建议您更明确地使用where子句并拼写出来并且只是为了便于阅读。

现在,如果你的连接在外连接的地方,你可能需要通过标准的限制

在这个例子中说你想要所有的电影,你想要与迈克尔J狐狸“暮光之城”...正确的加入这里返回所有的电影标题和名字,姓氏将不是空白当它是迈克尔J.福克斯。否则它将是空白的!

select firstname,lastname,title 
from actors 
join actorsmovies 
  on actors.actorid = actorsmovies.actorid 
and actors.firstname = 'Michael J' and actors.lastname 'Fox';
right join movies on actorsmovies.movieid = movies.movieid;