Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compter les occurrences en fonction de plusieurs conditions pour deux tables

Si je vous suis bien, vous pouvez utiliser exists pour filtrer sur 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'
)

Cela compte les lignes du premier tableau pour lesquelles au moins une ligne dans le deuxième tableau a Wisconsin. Si, en revanche, vous voulez vous assurer que toutes les lignes dans le deuxième tableau satisfont la condition, alors une option est :

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