SQL查询:如何在许多一对多关系计数频率是多少?
-
26-09-2019 - |
题
我对的相关博客文章的表和标签为一个表,在它们之间具有许多对多的关系。
我怎样才能提取跨越的子集的最频繁的标签的相关博客文章的? (例如,只有那些从过去一年) 有一种方法,以提取所有具有相关博客文章子集<?/ P>相关联的标签的频率
由于
编辑:我的架构:
CREATE TABLE `tag` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(200) NOT NULL,
`access` varchar(1),
`linked_created` datetime
)
;
CREATE TABLE `blogpost_tags` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`blogpost_id` integer NOT NULL,
`tag_id` integer NOT NULL,
UNIQUE (`blogpost_id`, `tag_id`)
)
;
CREATE TABLE `blogpost` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`title` varchar(50),
`body` varchar(500)
)
;
解决方案
(现在的模式已经被提供,除去我的示例架构和刚刚发布的查询)
Select T.name, Count(*) As UseCount
From Tag As T
Join BlogPost_Tag As BPT
On BPT.tag_Id = T.Id
Join BlogPost As BP
On BP.Id = BPT.blogpost_id
Where BP.Title Like '...'
Group By T.name
不隶属于 StackOverflow