nếu bạn muốn mục có bất kỳ thẻ nào trong hai thẻ thì:
select distinct item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit');
nếu bạn muốn mặt hàng có cả hai thẻ thì:
select item_id, item_name
from items_tags
where tag_name in ('yellow', 'fruit')
group by item_id, item_name
having count(*) = 2;
dựa trên nhận xét của bạn
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';
Truy vấn này cung cấp id và mục từ bảng mục. Nó cung cấp cho mặt hàng có cả thẻ màu vàng và trái cây. và các mục chỉ có thẻ màu đỏ.
nếu bạn muốn nhận các mục có hai thẻ và chỉ có hai thẻ thì hãy sử dụng điều kiện sau trong mệnh đề có
(group_concat(c.tag) like '%yellow%'
and group_concat(c.tag) like '%fruit%'
and count(*) = 2)