【问题标题】:SQL query: How to count frequency over a many-to-many relation?SQL查询:如何计算多对多关系的频率?
【发布时间】:2010-08-31 21:23:38
【问题描述】:

我有一个用于博客文章的表格和一个用于标签的表格,它们之间具有多对多的关系。

如何在博文的子集 中提取最频繁的标签? (例如只有过去一年的那些) 有没有办法提取与 blogposts 子集关联的所有标签的频率?

谢谢

编辑:我的架构:

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)
)
;

【问题讨论】:

  • 你应该向我们展示你的桌子设计(或者更好的是,一个小桌子设计来准确说明问题)。有了它,我们可以更轻松地提供帮助(即无需过多猜测)。
  • 你能提供一些示例数据和预期的输出吗?

标签: sql many-to-many frequency-analysis frequency-distribution


【解决方案1】:

(现在已经提供了架构,删除了我的示例架构并刚刚发布了查询)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2020-10-10
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多