Ако ви следвам правилно, можете да използвате exists
за филтриране на table2
:
select count(*) as cnt
from table1 t1
where t1.sex = 1 and t1.age = 3 and exists (
select 1
from table2 t2
where t2.id = t1.id and t2.var1 = 'Wisconsin'
)
Това отчита редовете в първата таблица, за които поне един ред във втората таблица има Уисконсин. Ако, от друга страна, искате да сте сигурни, че всички редове във втората таблица удовлетворява условието, тогава една опция е:
select count(*) as cnt
from table1 t1
inner join (
select id
from table2
group by id
having min(var1 <=> 'Wisconsin') = 1
) t2 on t2.id = t1.id
where t1.sex = 1 and t1.age = 3