select t1.ID,isNull(sum(num),0) num from stu t1 left join
(select ID,count(*) as num from stu t1 inner join dbo.CourseStuView t2 on t1.id=t2.stuid group by ID) t2
on t1.ID=t2.ID
group by t1.ID
执行后的结果
ID Num
1 2
2 1
3 0
4 0
**************************************************************
Couse 课程表
ID Name
1 数学
2 英语
Stu 学生表
ID Name
1 小赵
2 小钱
3 小孙
4 小李
CourseStu 学生选课表
CourseID StuID
1 1
1 2
2 1
CourseStuView 视图
SELECT dbo.CourseStu.CourseID, dbo.CourseStu.StuID, dbo.Course.Name, dbo.Stu.Name AS Expr1
FROM dbo.CourseStu INNER JOIN
dbo.Course ON dbo.CourseStu.CourseID = dbo.Course.ID INNER JOIN
dbo.Stu ON dbo.CourseStu.StuID = dbo.Stu.ID
CourseID StuID Name Expr1
1 1 数学 小赵
2 1 英语 小赵
1 2 数学 小钱