我遇到的问题是我想在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;
}
我获得了所有链接行以及与类型相关联的帖子,但无法获取查询来显示每种类型旁边的计数
答案 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
;