正确加入3个表格以创建列表视图,以便快速识别创建标记的人员,时间以及使用次数。
表:tags
id tag type submitted_on submitted_by
------------------------------------------------------------------
1 tag1 type1 0000-00-00 00:00:00 1
2 tag2 type1 0000-00-00 00:00:00 1
3 tag3 type1 0000-00-00 00:00:00 1
4 tag4 type1 0000-00-00 00:00:00 1
5 tag5 type1 0000-00-00 00:00:00 1
表:tagmap
id tag type tl users comms events submitted_on submitted_by
----------------------------------------------------------------------------------------------------
1 1 type1 2 0 0 0 0000-00-00 00:00:00 1
2 1 type1 156 0 0 0 0000-00-00 00:00:00 1
3 2 type1 2 0 0 0 0000-00-00 00:00:00 1
4 3 type1 2 0 0 0 0000-00-00 00:00:00 1
表:users
id first last
-----------------------
1 John Doe
SELECT
tags.id AS tagid,
tags.tag,
tags.submitted_on AS date,
CONCAT(users.first, ' ', users.last) AS username,
count(tm.tl) AS tls,
count(tm.user) AS users,
count(tm.comm) AS comms,
count(tm.event) AS events
FROM tags
LEFT JOIN users
ON users.id = tags.submitted_by
LEFT JOIN tagmap AS tm
ON tags.id = tm.tag
GROUP BY tm.tag
ORDER BY tags.id ASC
tagid tag date username tls users comms events
--------------------------------------------------------------------------------------
1 tag1 0000-00-00 00:00:00 John Doe 2 0 0 0
2 tag2 0000-00-00 00:00:00 John Doe 1 0 0 0
3 tag3 0000-00-00 00:00:00 John Doe 1 0 0 0
4 tag4 0000-00-00 00:00:00 John Doe 0 0 0 0
tagid tag date username tls users comms events
--------------------------------------------------------------------------------------
1 tag1 0000-00-00 00:00:00 John Doe 2 0 0 0
2 tag2 0000-00-00 00:00:00 John Doe 1 0 0 0
3 tag3 0000-00-00 00:00:00 John Doe 1 0 0 0
4 tag4 0000-00-00 00:00:00 John Doe 0 0 0 0
5 tag5 0000-00-00 00:00:00 John Doe 0 0 0 0
当总共有tags
时,查询只返回4行。 tag4和tag5都没有连接,但仍返回tag4。无论tags
表中是否有任何连接,我都需要返回所有tagmap
。
如何正确编写此查询以包含所有tags
,而不管tagmap
个连接是什么?
提前致谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
我认为这是因为您根据表tagmap中的tag列对它们进行分组。尝试更改第一个标记(例如,4而不是1)并再次执行查询。结果可能会得到5行。