Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL重复结果_Mysql_Sql_Codeigniter_Count - Fatal编程技术网

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*

我只是更改了你指定的内容,但我还是得到了同样的结果。我不认为你想要达到什么目标,你能再添加一些信息吗?我已经添加了一些信息,也许这会让事情变得更清楚一点。