Je vais essayer d'expliquer mon cas aussi bien que possible. Je crée un site Web où vous pouvez trouver des sujets en parcourant leurs tags. Rien d'étrange là-bas. J'ai du mal avec certaines des questions. Ils pourraient être facile pour vous, mon esprit est assez foiré de faire beaucoup de travail: P.Récupérer des champs d'une table qui a la même relation avec une autre table
J'ai les tables "topics" et "tags". Ils sont joints en utilisant la table tags_topics qui contient topic_id et tag_id. Lorsque l'utilisateur souhaite trouver un sujet, il peut d'abord sélectionner une étiquette à filtrer, puis en ajouter une autre au filtre. Ensuite, je fais une requête pour aller chercher tous les sujets qui ont les deux balises sélectionnées. Ils peuvent également avoir d'autres balises, mais ils DOIVENT avoir ces balises choisies pour filtrer. La quantité de tags à filtrer diffère, mais nous avons toujours une liste de tags sélectionnés par l'utilisateur pour filtrer. Cela a été la plupart du temps répondu en Filtering from join-table et je suis allé pour la solution de jointures multiples.
Maintenant, j'ai besoin de récupérer les balises que l'utilisateur peut filtrer. Donc, si nous avons déjà un filtre défini de 2 balises, j'ai besoin de récupérer toutes les balises sauf celles du filtre associé aux sujets qui inclut toutes les balises du filtre. Cela peut sembler bizarre, donc je vais donner un exemple pratique: P
Disons que nous avons trois sujets: tennis, gym et golf.
- tennis a tags: sport, basket, terrain et raquette
- gymnase a tags: le sport, la formation et les muscles
golf a tags: sport, boule, bâton et à l'extérieur
- L'utilisateur sélectionne le sport de tag, ainsi nous montrons tous les trois tennis, gymnase et golf, et nous montrons le ballon, la cour, la raquette, l'entraînement, les muscles, le bâton et dehors comme d'autres filtres possibles. L'utilisateur ajoute maintenant une bille au filtre. Le filtre est maintenant sport et balle, donc nous montrons les sujets tennis et golf, avec le court, la raquette, le bâton et l'extérieur comme filtres supplémentaires possibles. L'utilisateur ajoute maintenant le court au filtre, ainsi nous montrons le tennis et la raquette comme un filtre supplémentaire possible.
J'espère que je fais un certain sens. Au fait, j'utilise MySQL.
On ne sait pas ce qui rend les balises 1, 2 et 3 spéciales d'une manière que le «tas d'autres balises» ne le fait pas. Pourquoi sont-ils nécessaires alors que les autres ne le sont pas, et comment le saurions-nous? Est-ce une liste prédéfinie de tags que nous pouvons simplement supposer? – chaos
Vous voudrez peut-être donner une structure de tableau et mieux expliquer la question. Je pense que j'ai eu ce que tu veux mais il a fallu le lire 5 fois avant de comprendre. – achinda99
Exact dupliquer de http://stackoverflow.com/questions/648308/filtering-from-join-table –