Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecione as linhas dependentes de contagem de várias tabelas com união


Você complicou demais sua consulta, basta usar group by para obter as contagens por grupos. Atualização:como você tem as mesmas chaves nas tabelas 4a e 4b e deseja resumi-las em uma saída, você precisa de uma soma ou contagem abrangente, dependendo da subconsulta usada
select kd_hari, hari, sum(rowcount) as rowcount from
    (select a.kd_hari,hari, count(a.kd_hari) as rowcount
    from 4a a,tbhari h where a.kd_hari=h.kd_hari and kd_ruang in('L','P')
    group by a.kd_hari,hari
    union all
    select b.kd_hari,hari, count(b.kd_hari) 
    from 4b a,tbhari h where a.kd_hari=h.kd_hari and kd_ruang in('L','P')
    group by a.kd_hari,hari) as t
group by kd_hari,hari

Alternativamente, combine 4a e 4b com uma união all em uma subconsulta e junte isso na tabela tbhari e você pode usar count() com group by na subconsulta dessa maneira porque a subconsulta incluirá todas as linhas de ambas as tabelas.

No entanto, da maneira como escrevi o código de exemplo, você pode aproveitar os índices existentes ao unir as tabelas. Se você combiná-los primeiro com união e depois fizer a junção, nenhum índice será usado para a junção.