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

MySQL - zaznacz wszystkie elementy z wieloma hashtagami

dobrze znasz swoją listę, więc jest to prosty ciąg. i znasz swoją liczbę. można je zakleić w mysql Prepared Statement i wykonane.

Ale poniżej znajduje się lista i liczba umieszczona tylko w celach demonstracyjnych.

create table items
(   id int not null
);

create table tags
(   id int not null,
    name varchar(50)
);

create table item_tags
(   iid int not null,
    tid int not null
);

insert items (id) values (1),(2),(3),(4);
insert tags(id,name) values (1,'cat'),(2,'animal'),(3,'has nose');
-- note, everything has a nose so far:
insert item_tags (iid,tid) values (1,1),(1,3),(2,1),(2,3),(3,2),(3,3),(4,1),(4,2),(4,3);

select i.id,count(i.id)
from items i
join item_tags junc
on junc.iid=i.id
join tags t
on t.id=junc.tid and t.name in ('cat','animal')
group by i.id
having count(i.id)=2

-- only item 4 has both cat and animal (note nose is irrelevant)


  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 usuwa wszystkie spacje z całej kolumny

  2. Tworzenie tabel i problemy z kluczem podstawowym w Rails

  3. Sterownik MySQL ODBC 5.1 zwraca zły typ danych do ADODB

  4. Rodzic dziecko mysql

  5. MySQL zwalnia po INSERT