Mysql
 sql >> Database >  >> RDS >> Mysql

Contare le occorrenze in base a diverse condizioni per due tabelle

Se ti seguo correttamente, puoi usare exists per filtrare su 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'
)

Questo conta le righe nella prima tabella per le quali almeno una riga nella seconda tabella ha Wisconsin. Se, invece, vuoi assicurarti che tutte le righe nella seconda tabella soddisfa la condizione, quindi un'opzione è:

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