SQL inner join with count() 条件和关系代数

SQL inner join with count() condition, and relationnal algebra

我有这些 table:

而且我想统计每部电影的演员数量,然后只得到演员超过 10 人的电影。我有一个查询来计算每部电影的演员数量,如下所示:

SELECT idmovie, count(actor) FROM Cast GROUP BY idmovie HAVING count(actor) > 10;

现在,我想知道如何获得该结果并将其加入电影 table。 我试过了:

SELECT name FROM Movies INNER JOIN (SELECT idmovie FROM Cast GROUP BY idmovie HAVING count(actor) >2) Cast ON Cast.idmovie = Movies.id;

但是不行。

我还得把它翻译成关系代数。

π name (σ (count(σ id = idmovie))) Movies⨝Cast

这显然是错误的...

有什么帮助吗?

这个查询在我看来是正确的,除了你用 Cast 作为嵌套查询的别名,它也是 table 的名称。我不确定那会产生什么影响,但我希望它会混淆 MySQL。尝试以下操作:

SELECT name FROM Movies INNER JOIN
(SELECT idmovie FROM Cast GROUP BY idmovie HAVING count(actor) >2) CastCount
ON CastCount.idmovie = Movies.id;

我没有尝试过,但我认为它会起作用

试试这个...

SELECT m.name, COUNT(c.actor) AS 'ActorsCount' 
FROM Movies m INNER JOIN [Cast] c ON m.id = c.idmovie
GROUP BY m.name HAVING COUNT(c.actor) > 10;