sql >> Base de Datos >  >> RDS >> Mysql

Seleccione filas dependientes de recuento de varias tablas con unión

Ha complicado demasiado su consulta, solo use group by para obtener los recuentos por grupos. Actualización:dado que tiene las mismas claves en las tablas 4a y 4b y desea resumirlas en una sola salida, necesita una suma general o un recuento según la subconsulta que use

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 y 4b con una unión de todos en una subconsulta y únase a eso en la tabla tbhari y puede usar count() con group by en la subconsulta de esa manera porque la subconsulta incluirá todas las filas de ambas tablas.

Sin embargo, de la forma en que escribí el código de muestra, puede aprovechar los índices existentes mientras une las tablas. Si los combina primero con unión y luego hace la unión, entonces no se usarán índices para la unión.