SQL inner join with count() 条件和关系代数
SQL inner join with count() condition, and relationnal algebra
我有这些 table:
电影(id
、name
)
投射 (idmovie
, actor
)
而且我想统计每部电影的演员数量,然后只得到演员超过 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;
我有这些 table:
电影(
id
、name
)投射 (
idmovie
,actor
)
而且我想统计每部电影的演员数量,然后只得到演员超过 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;