Recherche multiple de tags (MySQL)
Bonjour,
Sur mon site, j'ai un système de tags à cocher pour effectuer une recherche de produits sur mon site, présenté comme ceci :
+ Couleur + Taille + Style
*tag *tag *tag
*tag *tag *tag
*tag *tag *tag
(en colonnes / type de tags)
Je veux faire en sorte que le visiteur puisse, par exemple cliquer sur 2 couleurs et 1 style et avoir comme résultats les produits ayant une des deux couleurs ET le style coché. Si le visiteur choisit deux couleurs et deux styles, le résultat doit contenir les produits ayants au moins 1 couleur ET 1 style correspondant.
Après pas mal de recherches, je n'ai trouvé qu'une solution mais très peu valable (30sec / requête, trop long surtout pour une solution AJAX... :?)
Code:
1 2 3 4 5 6
| SELECT p.products_id
FROM products p
WHERE products_id IN
( SELECT ttp.products_id FROM tags_to_products ttp WHERE tags_id = 581 OR tags_id = 567 ) AND
products_id IN
( SELECT ttp.products_id FROM tags_to_products ttp WHERE tags_id = 291); |
Avez-vous une meilleure solution à m'indiquer ? Merci ! 8O
Aide pour Requête sur tags
Bonjour à tous,
Je cherche à faire une requête MySQL permettant de chercher des produits par leurs tags, sur une base osCommerce trafiquée.
Deux tables sont concernées: products et tags_to_products (qui lie les tables products et tags par leurs id)
Pour être plus précis, j'ai plusieurs catégories de tags qui se présentent ainsi:
Couleur
| Rouge
| Jaune
| Bleu
Matière
| Fer
| Bois
| Acier
etc...
Chaque tags présentant une checkbox, l'utilisateur peu en choisir plusieurs de catégories différentes.
Mon problème: Si l'utilisateur choisit plusieurs tags dans des catégories différentes.
Mettons que l'utilisateur choisissent Rouge, Jaune et Acier.
J'aimerais que les résultats donnent les produits qui on soit la couleur Rouge, soit la couleur Jaune, soit Rouge et Jaune mais qui soient obligatoirement en Acier.
Pour résumé, mon but est que les produits obtenus aient au moins 1 tags de chaque catégories sélectionnées qui corresponde.
J'ai trouvé un moyen mais qui alourdi considérablement la requête, en faisant plusieurs INNER JOIN de la table tags_to_products, autant qu'il a de catégories de tags à trier.
Voilà, je ne sais pas si j'ai été assez clair sur mes intentions ou sur ma description, mais je pense que la nature du problème doit connue et sa résolution aussi. Si vous souhaitez plus d'informations n'hésitez pas...