带有count()条件和关系代数的SQL内连接

时间:2015-10-12 01:26:18

标签: sql relational-algebra

我有这些表格:

  • 电影(idname

  • 演员(idmovieactor

我想计算每部电影的演员数量,然后才能获得超过10位演员的电影。我有一个查询来计算每部电影的演员数量,如下所示:

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

现在,我想知道如何获得该结果并将其加入到Movies表中。 我试过了:

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

这显然是错误的......

任何帮助?

2 个答案:

答案 0 :(得分:0)

查询对我来说是正确的,除非您使用Cast对嵌套查询进行别名,这也是表的名称。我不确定它有什么影响,但我希望它能混淆MySQL。请尝试以下方法:

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

我没有尝试过,但我认为这样可行

答案 1 :(得分:0)

试试这个......

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;