, чтобы получить все фотографии с 3 тегами (ИЛИ БОЛЬШЕ), которые вы указали. Начните с тегов и присоединяйтесь к фотографиям.
select
p.id
from photographs p
left join photograph_tags c
on p.id = c.photograph_id
and c.value IN ('dog', 'water', 'stream')
group by p.id
having count(c.value) >= 3
тестирование вышеуказанного кода:
create table #photograph_tags (
photograph_id INT,
value varchar(50)
)
create table #photographs (
id int
)
insert into #photographs values (7)
insert into #photographs values (8)
insert into #photograph_tags values (7, 'dog')
insert into #photograph_tags values (7, 'water')
insert into #photograph_tags values (7, 'stream')
insert into #photograph_tags values (7, 'mountains')
insert into #photograph_tags values (8, 'stream')
insert into #photograph_tags values (8, 'mountains')
select * from #photographs
select * from #photograph_tags
select
p.id
from #photographs p
left join #photograph_tags c
on p.id = c.photograph_id
and c.value IN ('dog', 'water', 'stream')
group by p.id
having count(c.value) >= 3
drop table #photograph_tags
drop table #photographs