Domanda

Ho una tabella per blogposts e un tavolo per i tag, con una relazione molti-a-molti relazione tra di loro.

Come posso estrarre il più frequente tag attraverso una sottoinsieme di blogposts? (Ad esempio solo quelli del passato anno) C'è un modo per estrarre le frequenze di tutti i tag associati ai blogposts sottoinsieme?

Grazie

Edit: il mio schema:

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)
)
;
È stato utile?

Soluzione

(Ora che lo schema è stato fornito, rimosso il mio schema di esempio e appena pubblicato la query)

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top