Pergunta

Eu tenho uma tabela para posts do blog e uma tabela para tags, com uma relação muitos para muitos entre eles.

Como posso extrair a tag mais frequente em um subconjunto de posts do blog? (por exemplo, apenas os do ano passado) Existe uma maneira de extrair as frequências de todas as tags associadas ao subconjunto do blog Posts?

Obrigado

EDIT: Meu esquema:

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)
)
;
Foi útil?

Solução

(Agora que o esquema foi fornecido, removeu meu esquema de amostra e acabei de publicar a consulta)

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top