我有一个用PHP和MySQL实现的标记系统,包含以下表格:
表:blog_tags
表:blog_tags_assoc
表:blog_articles
我使用多对多关系将它们全部链接起来 (参考类似的东西:How to store tags in MySQL tags, one field in total or one filed for each tag?)
我现在要做的是创建一个MySQL查询,从blog_tags中选择blog_articles中文章实际引用的所有标签。
到目前为止,我知道“HAVING”是我可以使用的东西......但我不确定如何? 任何想法或建议都会受到欢迎。谢谢!
答案 0 :(得分:2)
如果您只想知道文章中使用过的标签,那么您可以这样做:
SELECT DISTINCT tag_id, tag_name
FROM blog_tags
INNER JOIN blog_tags_assoc USING ( tag_id );
答案 1 :(得分:1)
这将获得标签名称以及已使用标签的文章计数。
SELECT
`blog_tags`.`tag_name`,
count(*) AS `blog_article_count`
FROM `blog_tags`
JOIN `blog_tags_assoc`
ON `blog_tags`.`tag_id`=`blog_tags_assoc`.`tag_id`
JOIN `blog_articles`
ON `blog_articles`.`article_id`=`blog_tags_assoc`.`article_id`
GROUP BY `blog_tags`.`tag_name`