2015-04-06 31 views
0

我正在为学校的数据库项目工作,而我在类中的SQL查询方面比较新,所以我一直在寻找特定查询的帮助。使用外键的多个表之间的特定查询

这里是我的架构:

movies 
---------------------------- 
id:integer (primary key) 
title: varchar(100) 
-------------------------- 

stars 
-------------------------- 
id:integer (primary key) 
-------------------------- 

stars_in_movies 
--------------------------------------- 
star_id:integer, referencing stars.id 
movie_id:integer, referencing movies.id 
----------------------------------------- 

所以,提供了一个明星的ID,这将是查询来获取所有电影的明星是标题?

我知道这是一个针对查询的非常具体的问题,但我想知道是否有人可以提供特定的查询和解释为什么查询执行它的功能,因为我更感兴趣的是“为什么查询有效“的答案。

再次感谢您的帮助。

+1

嗨解决这个问题,你应该开始理解JOIN语法你可以做[这里](http://dev.mysql.com/doc/refman/5.0/en/join.html)也你可以看看我的答案[这里](http://stackoverflow.com/questions/29153032/how-to-test-in-and-between-each-of-several-tables/29157204#29157204)其中我试图一块一块地解释JOIN语法...也应该阅读mySql中的多对多关系... – 2015-04-06 09:49:32

+0

@AleksandarMiladinovic哦完美!对其他帖子的解释是完美的,谢谢。 – LeoVannini 2015-04-06 09:55:33

+0

不客气:)高兴我可以帮助一点点... – 2015-04-06 11:41:39

回答

1

你需要加入表作为

select 
m.id, 
m.title 
from movies m 
join stars_in_movies sm on sm.movie_id = m.id 
join stars s on s.id = sm.star_id 
where s.id = {your star id to be searched} 
0
select m.title from 
stars_in_movies sim join movies m 
on m.id=sim.movie_id 
where sim.star_id = 1 

连接这个表给你的电影片名,其中明星的发挥。检查链接:SQL Fiddle