选择具有总和的计数

时间:2015-01-26 07:22:10

标签: mysql

我想显示3个或更多的总帖子;

我有3张桌子

表格帖子:

id_post | title
1       | Ganteng
2       | serigala

表用户

id_user | username
1       | mantan
2       | otong
3       | pak_pol

表投票:

id_vote | id_post | LIKE | id_user
1       | 1       | 1    | 2
2       | 1       | 1    | 1
3       | 1       | 1    | 3
4       | 2       | 1    | 1
5       | 2       | 1    | 2
6       | 2       | 1    | 3

这是我的问题:

$sql="SELECT COUNT(v.id_post) as total_post
FROM vote v 
LEFT JOIN post p ON p.id_post=v.id_post
HAVING SUM(`like`) >= 3";

在我的期望中,$ sql的值应为2 ......但值的返回值为6

任何答案?

非常感谢

2 个答案:

答案 0 :(得分:0)

您正在寻找的是Distinct Count。对于Distinct,在您使用的SQL中使用正确的语法,请使用它。

作为回应Jens对Like是关键字的有效评论,我使用方括号来限定它。使用您所用语言的相应语法来限定可能的关键字字段名称。

$sql="SELECT COUNT(***DISTINCT*** p.id_post) as total_post
FROM post p 
LEFT JOIN vote v ON p.id_post=v.id_post
HAVING SUM([like]) >= 3";

答案 1 :(得分:0)

有两个步骤:

  1. 查找超过两个喜欢的所有帖子。 (因此,通过邮件分组,看看它是否有两个以上的喜欢。)
  2. 计算这些帖子。
  3. 查询:

    select count(*)
    from
    (
      select id_post
      from vote
      group by id_post
      having count(*) >= 3
    ) well_liked_posts;