SQL重复结果

时间:2013-09-10 16:46:33

标签: 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')
             ->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计算帖子数量会更好吗,或者将数字存储在数据库中会更好,因为它会通过删除或添加帖子来更改?

2 个答案:

答案 0 :(得分:0)

您没有在第一个查询中选择“已执行”,因此您会在不知道帖子引用的情况下获得未引用的帖子数量。

编辑: 你没有指定你想要的东西,你刚刚发布了同样的东西...... 但是我觉得你需要的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

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

答案 1 :(得分:0)

我终于做到了!永远地把我带走了,但是我的答案有点来自@Eldono,但我所做的只是把他的答案放在我的第一个查询中,然后完全摆脱了第二个查询,当然我改变了他的SELECT didSELECT *