J'ai une base de données MySQL avec 3 tables:Comment trouver des tags complémentaires?
- Le tableau principal des enregistrements appelés "pistes" (comme dans la musique)
- Une table de balises appelés "tags"
- Une table de jointure pour les deux appelés "taggings"
La table des étiquettes est essentiellement une liste de genres, qui est prédéfinie. Une piste peut alors avoir 1 ou plusieurs tags (via la table de jointure).
L'idée est, que l'utilisateur cocher les genres (étiquettes) pour lequel il ou elle veut trouver des pistes. Mais j'aimerais aussi que l'interface reflète les balises qui ne sont plus «utiles», c'est-à-dire les balises qui sont complémentaires aux balises actuellement sélectionnées.
Editer: Ce que j'ai manqué, c'est que j'ai besoin de trouver des balises qui sont complémentaires à l'actuellement sélectionné des étiquettes. Voir mon commentaire ci-dessous. Exemple: l'utilisateur sélectionne les balises "rock" et "pop", et affiche une liste de pistes qui correspondent à "rock" + "pop". Mais supposons qu'il n'y ait pas de pistes dans la base de données qui aussi correspondent "jazz". Dans ce cas, j'aimerais désactiver la balise "jazz" dans l'interface, car "rock" + "pop" + "jazz" donnerait zéro résultat.
Existe-t-il une façon intelligente de faire cela avec MySQL?
J'ai ajouté une autre option, c'est vraiment juste une reprise de la première, mais peut-être que cela ne va pas tuer votre client. – scottm
Un ami a signalé quelque chose, ce qui complique énormément les choses: La requête devrait trouver des balises "consécutives", pour ainsi dire. C'est à dire. Si vous recherchez les tags 1 et/ou 3, vous trouverez des pistes qui ont l'un ou l'autre ou les deux. Jusqu'ici tout va bien. Mais les requêtes ci-dessous diront si les pistes ont tag 1 & X, _ ou tag 3 & X, mais ce qui est réellement nécessaire est de voir s'il y a des pistes qui ont des tags 1 _and_ 3 _and_ X. Et cela rend tout cela très difficile, comme je peux le dire – Flambino