Estoy buscando una forma de crear una consulta para hacer lo siguiente:
Consideremos 3 tablas:
- productos: Lista de productos
- etiquetas: lista de etiquetas
- tag_ties: tabla utilizada para asociar una etiqueta a un producto
Consideremos esta estructura para cada tabla:
Productos:
- id (int, autoincrement)
- nombre (varchar, nombre del producto)
Etiquetas:
- id (int autoincrement)
- etiqueta (varchar, etiqueta de la etiqueta)
Tag_ties:
- id (int, autoincrement)
- tag_id (int, referencia a un identificador de etiqueta)
- ref_id (int, referencia a una identificación del producto)
Lo que quiero:
Obtenga todos los productos etiquetados con etiquetas ID 10, 11 y 12, por ejemplo.
Esta consulta no funciona, ya que devuelve los productos que tienen al menos una de las etiquetas:
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