Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL do wyszukiwania elementów z określonymi tagami

jeśli chcesz przedmiot z którymkolwiek z dwóch tagów, to:

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

jeśli chcesz, aby przedmiot miał oba znaczniki, to:

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

na podstawie Twojego komentarza

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

Zapytanie to podaje id i item z tabeli items. Daje przedmiot, który posiada zarówno żółtą, jak i owocową metkę. i przedmioty z czerwoną metką.

jeśli chcesz otrzymać elementy z dwoma znacznikami i tylko dwoma znacznikami, użyj następującego warunku w klauzuli posiadającej

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. stały sposób wykonywania mysqli->set_charset()?

  2. Dlaczego migracja Railsów Active Record wygenerowała COLLATE utf8_bin na kolumnach varchar mysql

  3. Konsola administracyjna Glassfish zgłasza wyjątek java.lang.IllegalStateException podczas tworzenia puli JDBC

  4. Kolejność wyszukiwania pełnotekstowego MYSQL według trafności

  5. Uzyskaj wielokąty zbliżone do szerokości geograficznej, długiej w MySQL