SQL Server统计每张DVD的借出量,然后统计每张DVD的借出量

SQL Server统计每张DVD的借出量,然后统计每张DVD的借出量,sql,sql-server,Sql,Sql Server,我正在制作DVD俱乐部数据库,我已经完成了表格和关系的制作。现在我正在编写可能有用的查询。因此,对于这种情况,只有三个表是相关的:tblLoans、tblCopies和tblDVDs。图如下: 所以,我想做的是数一数每一张DVD被拿起的数量。例如,《教父DVD》在我的DVD俱乐部里有三份,第一份被拿走了一次,第二份没有被拿走,第三份被拿走了两次。我想证明《教父》的DVD已经被拿起了1+0+2=3次。以下是我迄今为止编写的代码,但我不知道如何修复它以使其正常工作: SELECT tblDVDs.

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

所以,我想做的是数一数每一张DVD被拿起的数量。例如,《教父DVD》在我的DVD俱乐部里有三份,第一份被拿走了一次,第二份没有被拿走,第三份被拿走了两次。我想证明《教父》的DVD已经被拿起了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

您将三个表连接在一起的集合中,每个贷款都有一行,因此您不需要;不需要做任何复杂的事情,只需计算行数并按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