计算每张DVD副本的贷款,然后计算每张DVD,SQL Server的贷款数量

时间:2014-04-05 16:26:44

标签: sql sql-server

我正在制作一个DVD俱乐部数据库,我已经完成了制作桌子和关系。现在我正在编写可能有用的查询。因此,对于这种情况,只有三个表是相关的:tblLoans,tblCopies和tblDVDs。这是图表: enter image description here

所以,我想要做的是计算每张DVD的数量。例如,DVD教父在我的DVD俱乐部有三个副本,第一个副本被拿起一次,第二个副本没有被拿起,第三个副本被拿起两次。我想证明DVD The Godfather已被拿起1 + 0 + 2 = 3次。这是我到目前为止编写的代码,但我不知道如何修复它才能正常工作:

SELECT tblDVDs.DVD_ID, tblDVDs.Title, x.Number_Of_Pick_Ups
FROM (SELECT tblLoans.Copy_ID, COUNT(tblLoans.Loan_ID) As Number_Of_Pick_Ups FROM tblLoans LEFT JOIN tblCopies ON tblLoans.Copy_ID=tblCopies.Copy_ID GROUP BY tblLoans.Copy_ID)x
INNER JOIN
tblCopies
ON x.Copy_ID=tblCopies.Copy_ID
INNER JOIN
tblDVDs
ON tblCopies.DVD_ID=tblDVDs.DVD_ID

1 个答案:

答案 0 :(得分:1)

将三个表连接在一起的集合将为每笔贷款添加一行,因此您不需要做任何复杂的事情,只需按DVD计算行数和分组数。

select d.dvd_id,
       d.Title, 
       count(*)
from   tblDVDs d
       inner join tblCopies c on d.DVD_ID = c.DVD_ID
       inner join tblLoans l on c.Copy_ID = l.Copy_ID
group by d.dvd_id,
       d.Title