我有两个表(标签和标签图):
标签:
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
如何修改查询以返回计数。 谢谢!
答案 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;
答案 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;