用于递归查找的SQL查询结构示例

用于递归查找的SQL查询结构示例,sql,Sql,我有点纠结于这个问题。也许有人能给我一个提示 我的设置包括3个表(演员、电影和关系)。我想做的是: 找到所有名字以A开头的演员,他们在任何电影中都会与Person1一起出演 这就是我取得的成绩: SELECT Name FROM Actors a, Movies m, Relations r WHERE a.Name='A%' AND Person1.keyPerson = m.KeyPerson AND m.KeyMovies .... 一个关于如何继续的例子会很好 UPADATE-

我有点纠结于这个问题。也许有人能给我一个提示

我的设置包括3个表(演员、电影和关系)。我想做的是:

找到所有名字以A开头的演员,他们在任何电影中都会与Person1一起出演

这就是我取得的成绩:

SELECT Name 
FROM Actors a, Movies m, Relations r 
WHERE a.Name='A%' 
AND Person1.keyPerson = m.KeyPerson 
AND m.KeyMovies ....
一个关于如何继续的例子会很好

UPADATE-表如下所示:

演员(ActorId,姓名) 电影(电影ID、片名)
关系(actorsID,moviesID)

有几种方法可以做到这一点-一种方法是在语句中通过
,拉出电影
Person1
中的电影,并检查
A%
人的电影

Select  Distinct A.Name
From    Actors      A
Join    Relations   R   On  R.ActorId = A.ActorId
Where   A.Name Like 'A%'
And     R.MovieId In
(
    Select  R2.MovieId
    From    Actors      A2
    Join    Relations   R2  On  R2.ActorId = A2.ActorId
    Where   A2.Name = 'Person1'
)
另一种方法是通过
EXISTS
语句,查找
Person1
曾在
A%
中的任何电影:

Select  A.Name
From    Actors      A
Join    Relations   R   On  R.ActorId = A.ActorId
Where   A.Name Like 'A%'
And Exists
(
    Select  *
    From    Movies      M2
    Join    Relations   R2  On  R2.MovieId = M2.MovieId
    Join    Actors      A2  On  R2.ActorId = R2.ActorId
    Where   A2.Name = 'Person1'
    And     M2.MovieId = R.MovieId
)

没有子查询的解决方案:

SELECT     DISTINCT a.Name
FROM       Actors a
INNER JOIN Relations r
        ON r.actorsID = a.actorsID
INNER JOIN Relations r2
        ON r.moviesID = r2.moviesID
INNER JOIN Actors a2
        ON a2.actorsID = r2.actorsID
       AND a2.Name = 'Person1'
WHERE      a.Name LIKE 'A%'    

请提供表格的结构。您没有为
关系提供任何内容。请显示您的表结构。我不知道这些表之间是如何相互关联的。你可以使用演员到电影的关系r2到电影到演员a2的关系之间的5个内部联接,并将你的条件放在不同的部分。或者你可以在存在的地方做w(选择)…或者…很多组合。在这里用测试数据和预期结果对其进行尝试更新。和表的主键!请不要在评论中发布结构。使用“编辑”按钮更新您的原始帖子。建议使用显式联接,以便更容易区分您的联接条件和筛选条件。谢谢-我会尝试的