# "ListCategoriesByProject" 存储过程

说明：

这个过程通过接收传过来的参数ProjectID来列出分类的摘要信息。

定义：

    	CREATE    PROCEDURE TT_ListCategoriesByProject
    	(
    		@ProjectID int
    	)
    	AS

    	SELECT C.CategoryID,
    		C.Name,
    			C.Abbreviation AS CategoryShortName,
    			C.EstDuration,
    			ISNULL(Sum(EL.Duration), 0) AS ActualHours
    	FROM TT_Categories C
    		LEFT OUTER JOIN TT_EntryLog EL
    			ON C.CategoryID = EL.CategoryID
    	WHERE C.ProjectID = @ProjectID
    	GROUP BY C.CategoryID, C.Name, C.Abbreviation, C.EstDuration

用到的数据库表：

Categories表的主键是CategoryID字段，它的表结构如下图所示。Categories表和Category表通过主键CategoryID字段进行外部关联 ，这种关系保证了两个表在数据插入与更新时的一致性与完整性。

EntryLog表的主键是EntryLogID字段，其表结构如下图所示：