如何在mysql中获取关系表中的项目数

时间:2016-06-01 18:17:20

标签: php mysql sql database laravel

我有两个mysql db表'标签'和'tags_used'。我添加了用于检查db结构的图像。目前使用laravel fluent查询构建器。 现在我要查询的是关系表中的行数,如下所示。请使用laravel流畅查询或纯SQL查询来帮助我。

id    | name  |times_used
------------
1 | tag1 | 3
------------
2 | tag2 | 1
------------
3 | tag3 | 5
------------
4 | tag4 | 1
------------
5 | tag5 | 0
------------
----------

tags structure

enter image description here

1 个答案:

答案 0 :(得分:2)

在表格之间使用LEFT JOIN,并COUNT()计算匹配数。

SELECT t.id, t.name, IFNULL(COUNT(u.id), 0) AS times_used
FROM tags AS t
LEFT JOIN tags_used AS u ON t.id = u.tags_id
GROUP BY t.id

请注意,您必须使用COUNT(u.id)而不是COUNT(*),因此当没有匹配项时,您不会计算tags_used列中包含空值的行。