sql >> Database >  >> RDS >> Mysql

MySQL-query om te zoeken naar items met bepaalde tags

als je het item met een van de twee tags wilt, dan:

select distinct item_id, item_name 
from items_tags 
where tag_name in ('yellow', 'fruit'); 

als je wilt dat het item beide tags heeft, dan:

select item_id, item_name 
from items_tags 
where tag_name in ('yellow', 'fruit')
group by item_id, item_name
having count(*) = 2; 

op basis van je opmerking

  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';

Deze query geeft id en item uit de tabel met items. Het geeft een item met zowel geel als fruitlabel. en de items met alleen een rode tag.

als je items met twee tags en slechts twee tags wilt krijgen, gebruik dan de volgende voorwaarde in het hebben van clausule

(group_concat(c.tag) like '%yellow%' 
and group_concat(c.tag) like '%fruit%'
and count(*) = 2) 
    


  1. MYSQL - Krijg alle records die meer dan 1 record hebben voor dezelfde id

  2. Klasse 'mysqli_connect' niet gevonden

  3. Tel het aantal NULL's op een rij

  4. Hoe de groei van maand tot maand in PostgreSQL te berekenen?