如何从另一个表中获取第一个数学表的行数?

时间:2016-10-26 20:54:37

标签: sql sql-server tsql

我的数据库中有以下表格:

  • Films(id,name)
  • Awards(id,name)
  • Films_has_Awards(film_id,awd_id)

我怎样才能获得每部电影的奖项数量?

这是我的SQL查询:

SELECT 
    Films.name, 
    (SELECT COUNT(*) 
     FROM Films 
     JOIN Films_has_Awards ON Films_has_Awards.film_id = Films.id
     JOIN Awards ON Awards.id = Films_has_Awards.awd_id) AS NumberOfAwards
FROM 
    Films;

但我每部电影的奖项总是相同。

3 个答案:

答案 0 :(得分:2)

你的方法很好。在子查询中需要 correlation 条件:

Html.svg

注意:

  • 表别名使查询更易于编写和阅读。
  • 大概你不需要奖励表。奖励类型没有过滤。
  • 您在子查询中不需要SELECT f.name, (SELECT COUNT(*) FROM Films_has_Awards fha WHERE fha.file_id = f.id -----------------------------^ "correlates" to outer query ) AS NumberOfAwards FROM Films f;

答案 1 :(得分:0)

SELECT Films.name, Count(*)
FROM Films
JOIN Films_has_Awards
ON Films_has_Awards.film_id = Films.id
Group by Films.name

答案 2 :(得分:0)

display:block;