Mysql |计数标签

时间:2014-09-16 08:41:26

标签: mysql sql count tags

我有两个表(标签和标签图):

标签:

id   text
1    tag1
2    tag2
3    tag3

标记地图:

tag_id  question_id
1       1
1       2
1       3
1       4
2       5
3       6 

我希望得到如下表所示的结果:

id   text   count
1    tag1   4  
2    tag2   1
3    tag3   1

我的查询:

SELECT 
    t.id, 
    t.text
FROM
    `#__tags` AS t

如何修改查询以返回计数。 谢谢!

3 个答案:

答案 0 :(得分:2)

使用以下查询:

SELECT t1.id,
       t1.text,
       count(t2.question_id) AS COUNT
FROM Table1 t1
LEFT JOIN Table2 t2 ON (t1.id=t2.tag_id)
GROUP BY t1.id;

SQL Fiddle Demo

答案 1 :(得分:0)

您可以通过对地图表的各个ID进行分组,然后计算每个组中的行数来实现此目的。编辑:哦,并且你需要过滤掉那些不属于笛卡尔积的行,这些行通过包含where子句来生成2个表的连接。

SELECT 
    t.id, 
    t.text,
    COUNT(tm.tag_id) AS count
FROM
    `#__tags` AS t, 
    `tag_map` AS tm
WHERE t.id = tm.tag_id
GROUP BY
    tm.tag_id

答案 2 :(得分:0)

SELECT t1.id,
       t1.text,
       count(t2.tag_id) AS `count`
FROM tag t1
LEFT JOIN tag_map t2 ON t1.id=t2.tag_id
GROUP BY t1.id;