Je recherche un moyen de créer une requête pour effectuer les opérations suivantes:
Prenons 3 tableaux:
- produits: Liste des produits
- balises: liste de balises
- tag_ties: tableau utilisé pour associer un tag à un produit
Considérons cette structure pour chaque table:
Des produits:
- id (int, incrémentation automatique)
- nom (varchar, nom du produit)
Mots clés:
- id (auto-incrémentation)
- label (varchar, label du tag)
Tag_ties:
- id (int, incrémentation automatique)
- tag_id (int, référence à un identifiant de tag)
- ref_id (int, référence à un identifiant de produit)
Ce que je veux:
Obtenez tous les produits étiquetés avec les étiquettes id 10, 11 et 12 par exemple.
Cette requête ne fonctionne pas, car elle renvoie les produits ayant au moins l'une des balises:
select
p.name as name,
p.id as id
from
products p inner join tag_ties ties
on
p.id=ties.ref_id
where
ties.ref_id=p.id and
ties.tag_id in (10,11,12)
group by
p.id
order by
p.name asc