用于递归查找的SQL查询结构示例
我有点纠结于这个问题。也许有人能给我一个提示 我的设置包括3个表(演员、电影和关系)。我想做的是: 找到所有名字以A开头的演员,他们在任何电影中都会与Person1一起出演 这就是我取得的成绩:用于递归查找的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-
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(选择)…或者…很多组合。在这里用测试数据和预期结果对其进行尝试更新。和表的主键!请不要在评论中发布结构。使用“编辑”按钮更新您的原始帖子。建议使用显式联接,以便更容易区分您的联接条件和筛选条件。谢谢-我会尝试的