Sto cercando un modo per creare una query per effettuare le seguenti operazioni:
Consideriamo 3 tabelle:
- prodotti: Elenco dei prodotti
- tags: elenco di tag
- tag_ties: tabella utilizzata per associare un tag a un prodotto
Consideriamo questa struttura per ogni tabella:
Prodotti:
- id (int, autoincrement)
- nome (varchar, nome del prodotto)
tag:
- id (int autoincrement)
- etichetta (varchar, etichetta del tag)
Tag_ties:
- id (int, autoincrement)
- tag_id (int, riferimento a un ID tag)
- ref_id (int, riferimento a un ID prodotto)
Quello che voglio:
Ottieni tutti i prodotti che sono taggati con i tag id 10, 11 e 12 per esempio.
Questa query non funziona, in quanto restituisce i prodotti con almeno uno dei tag:
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