query SQL: Come contare la frequenza su una relazione molti-a-molti?
-
26-09-2019 - |
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)
)
;
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