Застрял в запросе SQL для подсчета строк - PullRequest
1 голос
/ 24 июня 2011
SELECT 
  COUNT(*) AS TotalUserVotes
FROM tblArticleVotes AS v 
INNER JOIN tblArticles AS a 
  ON v.ArticleID = a.ID 
     AND a.AuthorID = 13405

Это всегда возвращает 0. У меня есть таблица tblArticles, в которой есть AuthorID и ID (первичный ключ для статьи).

У меня тогда есть таблица голосов статьи, сarticleID столбец.

Данный пользователь 13405 Мне нужно выяснить, сколько голосов они имеют по всем своим статьям!

Просто чтобы подтвердить, в настоящее время есть одна запись в tblArticleVotes, который имеет articleID 5.В статье ID 5 указан идентификатор автора 13405.

Ответы [ 4 ]

4 голосов
/ 24 июня 2011

Хммм ... AuthorID в JOIN выглядит странно ... может быть, это работает лучше?

SELECT COUNT(*) AS TotalUserVotes
  FROM tblArticleVotes AS v INNER JOIN
  tblArticles AS a ON v.ArticleID = a.ID
  WHERE a.AuthorID = 13405
2 голосов
/ 24 июня 2011

В вашем запросе нет ничего плохого.Чтобы решить эту проблему, разбейте запрос.

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

PRINT @ArticleID
SELECT * FROM tblArticleVotes where ArticleID=@ArticleID
2 голосов
/ 24 июня 2011

Попробуйте изменить «И» на «ГДЕ»:

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

HTH

1 голос
/ 24 июня 2011

попробуйте вместо этого:

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
...