requête SQL: Comment compter la fréquence sur plusieurs à-plusieurs?
-
26-09-2019 - |
Question
J'ai une table pour blogposts et une table pour les étiquettes, avec un grand nombre à plusieurs rapports entre eux.
Comment la balise la plus fréquente puis-je extraire dans un sous de blogposts? (Par exemple que ceux de l'année dernière) Est-il possible d'extraire les fréquences de toutes les balises associées au sous-ensemble de blogposts?
Merci
Edit: mon schéma:
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)
)
;
La solution
(Maintenant, ce schéma a été fourni, enlevé mon exemple de schéma et vient d'afficher la requête)
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow