2011-06-23 77 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]