Mysql SQL重复结果
我有一个这样的疑问Mysql SQL重复结果,mysql,sql,codeigniter,count,Mysql,Sql,Codeigniter,Count,我有一个这样的疑问 $query =$this->db->query('SELECT COUNT(did) AS TheCount FROM posts GROUP BY did'); return $query->result(); 这个查询与这个查询相关 $this->db->group_by('did') -
$query =$this->db->query('SELECT COUNT(did) AS TheCount
FROM posts
GROUP BY did');
return $query->result();
这个查询与这个查询相关
$this->db->group_by('did')
->from('posts')
->join('users', 'users.username = posts.username');
$query = $this->db->get();
return $query->result();
我遇到的问题是,HTML完美地显示了第二个查询,但是在第一个查询中复制了第一个查询,如果这有意义的话
有点像这样
a post | TheCount number, DifferentCount number
another post | TheCount number, DifferentCount number
a post | TheCount number
another post | DifferentCount number
我希望有足够的相关信息,是的,我已经尝试在第一次查询中使用DISTINCT
为了获得更多信息,每个帖子都被分组到一个讨论中,讨论有自己的id
,因此did
,每个帖子都有自己的pid
我希望它看起来像这样
a post | TheCount number, DifferentCount number
another post | TheCount number, DifferentCount number
a post | TheCount number
another post | DifferentCount number
就性能而言,使用
count
统计帖子的数量更好,还是只在数据库中存储通过删除或添加帖子而改变的数量更好?您在第一次查询中没有选择“did”,因此,你可以在不知道帖子所指内容的情况下,计算未引用帖子的数量
编辑:
你没有指定你想要什么,你只是再次发布了同样的内容。。。
但是,我认为您需要的SQL是这样的:
SELECT did, username, COUNT(*) AS TheCount
FROM posts
JOIN users ON users.username = posts.username
GROUP BY did
SELECT did, COUNT(*) AS TheCount
FROM posts
WHERE posts.username = 'John'
GROUP BY did
通过此查询,您将获得每次讨论中参与讨论的每个用户的帖子数。
比如:
did | Username | TheCount
1 | John | 2 (posts)
1 | Andrew | 1 (post)
2 | Michael | 5
2 | John | 4
...
如果您关注的是特定用户名,您可以简化如下:
SELECT did, username, COUNT(*) AS TheCount
FROM posts
JOIN users ON users.username = posts.username
GROUP BY did
SELECT did, COUNT(*) AS TheCount
FROM posts
WHERE posts.username = 'John'
GROUP BY did
结果:
did | Username | TheCount
1 | John | 2 (posts)
2 | John | 4
如果您需要不同的内容,只需指定您想要的计数(对于每次讨论?对于每个用户?对于自定义用户?)我终于做到了!我花了很长时间,但我的答案有点来自@Eldono,但我所做的只是把他的答案放在我的第一个查询中,然后完全摆脱了第二个查询,当然我把他的
SELECT did
改成了SELECT*
我只是更改了你指定的内容,但我还是得到了同样的结果。我不认为你想要达到什么目标,你能再添加一些信息吗?我已经添加了一些信息,也许这会让事情变得更清楚一点。