Sie haben Ihre Abfrage zu kompliziert gemacht, verwenden Sie einfach group by, um die Anzahl nach Gruppen zu erhalten. Update:Da Sie in den Tabellen 4a und 4b die gleichen Schlüssel haben und diese in einer Ausgabe zusammenfassen möchten, benötigen Sie je nach verwendeter Unterabfrage eine übergreifende Summe oder Anzahl
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
Kombinieren Sie alternativ 4a und 4b mit einer Union all in einer Unterabfrage und verbinden Sie das mit der tbhari-Tabelle, und Sie können auf diese Weise count() mit group by in der Unterabfrage verwenden, da die Unterabfrage alle Zeilen aus beiden Tabellen enthält.
So wie ich den Beispielcode geschrieben habe, können Sie jedoch die vorhandenen Indizes nutzen, während Sie die Tabellen verknüpfen. Wenn Sie sie zuerst mit Union kombinieren und dann den Join durchführen, werden keine Indizes für den Join verwendet.