我在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;
答案 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;