2012-07-05 64 views
1

我想显示一张照片库和每张照片评分的次数。选择的SQL计数

这里是我的简单的查询,但不知道如何从收视率表的计数。

SELECT 
    Photo.photoID 
    ,Photo.photoName 
    ,Member.memberID 
    ,Member.memberFName 
    ,Rating.ratingID 
FROM 
    Photo 
INNER JOIN Member ON Photo.memberID = Member.memberID 
LEFT OUTER JOIN Rating ON Photo.photoID = Rating.photoID 
ORDER BY Photo.photoID DESC 

每次点击的星级按钮,一个新的记录被插入到表评级。我只允许将照片评分为100次,因此我想要显示用户浏览图库时照片的评分次数(即57/100)。

感谢您的帮助!

回答

0

您可以使用带有group by语句的count函数来计算评级。

select p.photoID, 
p.photoName, 
m.memberID, 
m.memberFName, 
count(r.RatingID) as RatingCount 
from Photo p 
inner join Member m on p.memberID = m.memberID 
left outer join Rating r on p.photoID = r.photoID 
group by p.photoID, p.photoName, m.memberID, m.memberFName 
+0

谢谢两位! COALESCE - 对我来说这是一个新的! – user1505054 2012-07-05 20:47:48

1
select p.photoID, 
    p.photoName, 
    m.memberID, 
    m.memberFName, 
    coalesce(rc.Count, 0) as RatingCount 
from Photo p 
inner join Member m on p.memberID = m.memberID 
left outer join (
    select photoID, count(*) as Count 
    from Rating 
    group by photoID 
) rc on p.photoID = rc.photoID 
order by p.photoID desc