Wenn ich dir richtig folge, kannst du exists
verwenden um nach table2
zu filtern :
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'
)
Dies zählt Zeilen in der ersten Tabelle, für die mindestens eine Reihe in der zweiten Tabelle hat Wisconsin. Wenn Sie hingegen sicherstellen möchten, dass alle Zeilen in der zweiten Tabelle die Bedingung erfüllen, dann ist eine Option:
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