如何使用AND条件选择多对多关系中的记录

时间:2014-06-03 11:52:42

标签: mysql sql

我有一个跟踪电影和演员的数据库,其中包含以下表格:

Person(ID, Name)
Movie(ID, Name)
Actors(ID, PersonID, MovieID)

ID字段都是主键,PersonID& MovieID是外键。

我想选择Tom Cruise和Brad Pitt所播放的所有电影。 我试着做以下事情:

SELECT * FROM Person, Actors
WHERE Person.ID = Actors.ActorID AND
(Person.Name= 'Tom Cruise' or Person.Name= 'Brad Pitt')
GROUP BY Actors.MovieID
HAVING COUNT(Actors.MovieID) > 1

这不起作用,因为人名不是唯一的(我不能将其更改为唯一)。如果我有另一个名叫布拉德皮特的演员和两部布拉德皮茨在同一部电影中播放,它也会因此返回。

我该怎么做?

注意:我查询的演员数量可能会发生变化。我可能需要一部电影,其中有10位演员都参与其中。

1 个答案:

答案 0 :(得分:1)

在表格之间进行内部联接,如下所示

SELECT m.Name as MovieName 
FROM Movie m
inner join Actors a
on m.ID = a.MovieID
inner join Person p
on p.ID = a.ActorID 
and p.Name in ('Tom Cruise','Brad Pitt')