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

Seleziona le righe dipendenti dal conteggio da più tabelle con unione

Hai complicato eccessivamente la tua query, usa semplicemente il gruppo per ottenere i conteggi per gruppi. Aggiornamento:poiché hai le stesse chiavi in ​​entrambe le tabelle 4a e 4b e vuoi riepilogarle in un unico output, hai bisogno di una somma o di un conteggio generale a seconda della sottoquery che usi

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

In alternativa, combina 4a e 4b con un'unione tutto in una sottoquery e unisci quella sulla tabella tbhari e puoi usare count() con group by sulla sottoquery in questo modo perché la sottoquery includerà tutte le righe di entrambe le tabelle.

Tuttavia, nel modo in cui ho scritto il codice di esempio puoi sfruttare gli indici esistenti mentre unisci le tabelle. Se li combini prima con l'unione e poi esegui il join, non verranno utilizzati indici per il join.