2011-06-23 70 views
1
SELECT 
    COUNT(*) AS TotalUserVotes 
FROM tblArticleVotes AS v 
INNER JOIN tblArticles AS a 
    ON v.ArticleID = a.ID 
    AND a.AuthorID = 13405 

这总是返回0。我有有AuthorIDID(对于文章的主键)的表tblArticles憋屈SQL查询来计算行

然后,我有一个文章投票表,与articleID列。

鉴于用户13405我需要找出他们在他们的所有文章中有多少票!

只是为了确认,目前tblArticleVotes中有一条记录,其商品ID为5。文章ID 5的作者ID是13405.

+1

您确定'tblArticles'中有正确的作者ID和至少一票投票的行吗?您可能想要将一些示例数据行添加到问题中。 –

回答

4

嗯...... JOIN中的AuthorID看起来很奇怪......也许这样更好吗?

SELECT COUNT(*) AS TotalUserVotes 
    FROM tblArticleVotes AS v INNER JOIN 
    tblArticles AS a ON v.ArticleID = a.ID 
    WHERE a.AuthorID = 13405 
+0

谢谢!很棒。 –

+2

这与原始查询有何不同?除了sql语句的语义之外,它们不应该执行到相同的结果集吗? –

2

尝试改变 “和” “WHERE”:

SELECT COUNT(*) AS TotalUserVotes 
FROM tblArticleVotes AS v INNER JOIN 
tblArticles AS a ON v.ArticleID = a.ID WHERE a.AuthorID = 13405 

HTH

1

试试这个:

SELECT a.AuthorID, COUNT(v.id) as votes 
FROM tblArticles AS a 
LEFT JOIN tblArticleVotes AS v ON a.ID = v.ArticleID 
GROUP BY a.ID 
WHERE a.AuthorID = :author_id 
2

没有什么不对您的查询。为了解决这个问题,请打开查询。

DECLARE @ArticleID int 
SELECT @ArticleID = a.ID FROM tblArticles a WHERE a.AuthorID=13405 

PRINT @ArticleID 
SELECT * FROM tblArticleVotes where [email protected]