sql >> Database >  >> RDS >> Mysql

MySQL - selecteer alle items met meerdere hashtags

Nou, je kent je lijst, dus dat is een simpele string. en je kent je telling. deze kunnen worden vastgelopen in een mysql Prepared Statement en uitgevoerd.

Maar hieronder is het met de lijst en het aantal erin gestopt, alleen voor demo-doeleinden.

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. Wat is het nut van een cursor in SQL Server?

  2. Hoe dit te doen in Laravel, subquery waar in

  3. Web- en databaseserverinstellingen om de UTC-tijdzone goed te krijgen

  4. Als u geïndexeerde weergaven en MERGE gebruikt, lees dit dan alstublieft!