我有3张桌子可以让我获得一些图片的所有标签,或者所有带有特定标签的图片。
我还想知道每个标签的存在次数。我如何使用MySQL获取此信息?
是否值得在Tags
表中添加“计数”列来保存此信息?
File ID File Name ...
------- ---------
1 a.jpg ...
2 b.png ...
3 c.jpg ...
. .
. .
. .
Tag Name Tag Creator ...
-------- -----------
David david ...
2010 julia ...
. .
. .
. .
File ID Tag Name
------- --------
1 2010
1 April
1 David
2 2010
2 Julia
3 Friends
. .
. .
. .
答案 0 :(得分:4)
SELECT FilesTags.Tag_name, COUNT(*) as number_of_occurences
FROM FilesTags
GROUP BY FilesTags.Tag_name;
答案 1 :(得分:3)
Zaki's response回答了您的一个问题,而不回答了另一个问题。
“是否值得添加”计数“列 到Tags表来保存这个信息?“
这实际上取决于你将如何处理这些计数。而这又取决于您网站的性质。
SO会显示标签旁边的计数;这部分是因为它的目标受众是极客和极客喜欢数字。但是,在标记问题时,计数也是有用的信息。另外还有要考虑的Taxonomist徽章,以及版主页面上新标签的显示。换句话说,计数上有很多调用,因此对每个标记保持和维持计数是有意义的。
其他网站不会从标签中提取几乎同样多的果汁。但是,举个例子,假设您要显示tag cloud;您可能希望每次渲染时都避免计算FileTags
中的所有条目。拿着计数将是一个帮助。
但请记住,写作可能很昂贵。因此,在决定存储它们之前,要清楚地知道您将如何处理这些计数。异步维护它们,也许是在批量工作中,这将是一个好主意。
答案 2 :(得分:1)
要查找标签“ABC”发生的次数,请执行
SELECT COUNT(*)FROM FilesTags表WHERE标记名称=“ABC”;
希望这有帮助。