Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL заявка за търсене на елементи с определени тагове

ако искате елемента с някой от двата етикета, тогава:

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) 
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделяне на таблица на база данни в MySQL

  2. Външен ключ на MySQL, не може да се създаде таблица (errno:150)

  3. Извличането от голям xml заявката е неуспешна с твърде дълъг низов литерал

  4. Редът на таблиците в прави съединения, без директиви за подсказки, влияе ли на производителността?

  5. Грешка при достъп до EntityManager - openjpa - WAS liberty профил