显示所有类别,并在该类别旁边显示该类别中的帖子数

时间:2019-07-05 18:47:32

标签: php mysql

我遇到的问题是我想在1个查询中显示所有类型和与该类型相关的帖子数量。

例如:

<p>
Streets 2<br/>
Avenues 3<br/>
Roads   7
</p>

我的数据库中有2个表,一个表称为type,另一个表称为posts,posts具有type_id作为将两个表链接在一起的外键。 每个帖子都会有一个type_id,这基本上是一个下拉选择框,人们可以在其中选择帖子的类型,并在提交时按类型对帖子进行分类。

数据库位于运行MySQL的实时服务器上

public function getCountCategory() {
    $this->db->query("SELECT * FROM type INNER JOIN posts ON  type.type_id = posts.type_id");
    $results = $this->db->resultSet();
    return $results;
}

我获得了所有链接行以及与类型相关联的帖子,但无法获取查询来显示每种类型旁边的计数

2 个答案:

答案 0 :(得分:0)

一种方法是汇总结果:

SELECT   t.name, COUNT(*)
FROM     type t
JOIN     posts p ON t.type_id = p.type_id
GROUP BY t.name

答案 1 :(得分:0)

您可以使用GROUP BY汇总数据,然后对分组进行计数。请记住,要显示的列(SELECT必须在GROUP BY子句中。

如果type.name 是唯一的,则您只能在分组中依靠它。

SELECT type.name, COUNT(*) 
FROM type typ
JOIN posts pst ON typ.type_id = pst.type_id 
GROUP BY type.name
;

如果type.name 不是唯一,那么您也必须按type.type_id分组才能获得不同的分组。

SELECT type.name, COUNT(*) 
FROM type typ
JOIN posts pst ON typ.type_id = pst .type_id 
GROUP BY type.type_id, type.name
;