यदि आप दो में से किसी भी टैग वाला आइटम चाहते हैं तो:
select distinct item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit');
यदि आप चाहते हैं कि आइटम में दोनों टैग हों तो:
select item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit')
group by item_id, item_name
having count(*) = 2;
आपकी टिप्पणी के आधार पर
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';
यह क्वेरी आइटम तालिका से आईडी और आइटम देती है। यह वह वस्तु देता है जिसमें पीले और फल दोनों टैग होते हैं। और केवल लाल टैग वाले आइटम।
यदि आप दो टैग और केवल दो टैग वाले आइटम प्राप्त करना चाहते हैं तो क्लॉज होने में निम्न शर्त का उपयोग करें
(group_concat(c.tag) like '%yellow%'
and group_concat(c.tag) like '%fruit%'
and count(*) = 2)