Je rencontre des problèmes avec une requête SQL délicate.Filtrage à partir de la table de jointure
Dans ma base de données MySQL, il y a les tables topics, tags et tags_topics pour les joindre. Je souhaite récupérer des sujets partageant les mêmes balises spécifiées. Par exemple, disons que j'ai 3 balises avec les identifiants 1, 2 et 3, je veux récupérer tous les sujets qui ont l'étiquette 1, 2 et 3 qui leur sont associés. Les sujets peuvent avoir d'autres balises, mais doivent avoir toutes les balises spécifiées.
Aidez-moi plz pense xD
EDIT: trouvé une solution en utilisant GROUP BY dans cette question: Fetching only rows that match all entries in a joined table (SQL) Si quelqu'un a une solution plus élégante, s'il vous plaît poster :)
COUNT (*) doit être> 2, car les sujets peuvent également avoir d'autres tags. Merci pour toutes vos suggestions! Modifiez cela, et je le définirai comme la bonne réponse;) – finpingvin
@finpingvin - les autres balises ne sont pas considérées dans l'instruction. Le COUNT (*) = 3 sera correct, tant qu'il n'y a pas de doublons dans la table de jonction –
Oui, je suppose que tags_topics a une clé primaire sur {topicId, tagId}. Btw, j'ai édité la quatrième solution pour éviter une jointure dans la sous-requête, après avoir lu la solution de @Russ Cam. –