首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询COUNTing错误

MySQL查询COUNTing错误
EN

Stack Overflow用户
提问于 2010-07-07 09:04:35
回答 3查看 74关注 0票数 0

嗯,我意识到,事实上,我的逻辑更有可能是错误的;

下面是我的疑问:

代码语言:javascript
复制
SELECT 
  code.id AS codeid, code.title AS codetitle, code.summary AS codesummary, code.author AS codeauthor, code.date,
  code_tags.*, 
  tags.*, 
  users.firstname AS authorname, 
  users.id AS authorid,
  ratingItems.*, FORMAT((ratingItems.totalPoints / ratingItems.totalVotes), 1) AS rating,
  GROUP_CONCAT(tags.tag SEPARATOR ', ') AS taggroup,
  COUNT(comments.codeid) AS commentcount
FROM 
  code
  join code_tags on code_tags.code_id = code.id
  join tags on tags.id = code_tags.tag_id
  join users on users.id = code.author
  left join comments on comments.codeid = code.id
  left join ratingItems on uniqueName = code.id
GROUP BY code_id
ORDER BY date DESC
LIMIT 0, 15 

抱歉,这里面有点“肿”。我遇到的问题是commentcount或(COUNT(comments.codeid) AS commentcount) --我想计算代码提交的注释总数。以前,它正常工作,但我重新构造了我的MySQL语法,现在它停止工作了:

数据库中只有两个有注释的code提交。这些结果中的第一个正确地标识了它有超过0的注释,但是报告它在commentcount中有'2‘,而实际上它只有一个。

第二个提交的也只有一个评论,但是,它告诉我它有4个!

有人能告诉我我的逻辑出了什么问题吗?

谢谢!

杰克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-07 09:19:26

试一试:

代码语言:javascript
复制
COUNT(DISTINCT comments.codeid) AS commentcount

代码语言:javascript
复制
(SELECT COUNT(*) FROM comments WHERE comments.codeid = code.id) AS commentcount
票数 1
EN

Stack Overflow用户

发布于 2010-07-07 09:08:56

尝试通过约束消除组。然后查看重复行的来源,并修复原始查询。这也能解决你的问题。

票数 1
EN

Stack Overflow用户

发布于 2010-07-07 09:52:48

尝试从一个简单的查询开始,并以此为基础进行构建。如果我正确理解了您的结构,下面的查询将为每次提交的代码返回正确的注释数:

代码语言:javascript
复制
SELECT code.*, COUNT(code.id) AS comment_count
FROM code
JOIN comments ON comments.codeid = code.id
GROUP BY(code.id);

在您的示例中有一些看起来很奇怪的列名和联接,这可能会导致…问题或者可能只是一个奇怪的命名方案:-)

例如,通过比较ratingItemscode,您可以将code.idratingItems.uniqueName连接到ratingItems.uniqueName中。这也许是对的,但看上去不太对。也许它应该更像是:

代码语言:javascript
复制
LEFT JOIN ratingItems ON ratingItems.code_id = code.id

从一个基本的工作查询开始,然后添加其他联接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3193323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档