0

我有一个这样的查询

$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

我希望这是足够的相关信息,是的,我已经尝试DISTINCT在第一个查询中使用。

id对于更多信息,每个帖子都被分组到一个讨论中,因此讨论有自己的did,每个帖子都有自己的pid

我希望它看起来像这样

a post | TheCount number

another post | DifferentCount number

并且就性能而言,使用 计算帖子的数量会COUNT更好,还是将数字存储在数据库中并通过删除或添加帖子进行更改会更好?

4

2 回答 2

0

您没有在第一个查询中选择“did”,因此您在不知道它们指的是什么的情况下获得未引用的帖子计数。

编辑:你没有指定你想要什么,你只是再次发布了同样的东西......但是我认为你需要的 SQL 是这样的:

SELECT did, username, COUNT(*) AS TheCount
FROM posts
JOIN users ON users.username = posts.username
GROUP BY did

通过此查询,您将获得每次讨论的每个参与该讨论的用户的帖子数。就像是:

did   |   Username | TheCount
1     |   John     | 2 (posts)
1     |   Andrew   | 1 (post)
2     |   Michael  | 5
2     |   John     | 4
...

如果您专注于特定的用户名,您可以像这样简化:

SELECT did, COUNT(*) AS TheCount
FROM posts
WHERE posts.username = 'John'
GROUP BY did

结果:

did   |   Username | TheCount
1     |   John     | 2 (posts)
2     |   John     | 4

如果您需要不同的东西,只需指定您想要的计数(对于每个讨论?对于每个用户?对于自定义用户?)

于 2013-09-10T18:24:05.597 回答
0

我终于做到了!花了我很长时间,但我的答案有点来自@Eldono,但我所做的只是把他的答案放在我的第一个查询中,然后完全摆脱了第二个查询,当然我把他改成SELECT didSELECT *.

于 2013-09-12T17:05:24.787 回答