hvis du vil have varen med et af de to tags, så:
select distinct item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit');
hvis du ønsker, at varen skal have begge tag, så:
select item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit')
group by item_id, item_name
having count(*) = 2;
baseret på din kommentar
select a.id, a.item
from items a, items_tags b, tags c
where a.id = b.item_id
and b.tag_id = c.id
group by id, item
having (group_concat(c.tag) like '%yellow%'
and group_concat(c.tag) like '%fruit%')
or group_concat(c.tag) = 'red';
Denne forespørgsel giver id og vare fra elementtabellen. Det giver en vare, som har både gul og frugtmærke. og varer med kun rødt mærke.
hvis du ønsker at få varer med to tags og kun to tags, så brug følgende betingelse i at have klausul
(group_concat(c.tag) like '%yellow%'
and group_concat(c.tag) like '%fruit%'
and count(*) = 2)