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

Vælg antal afhængige rækker fra flere tabeller med union

Du har overkompliceret din forespørgsel, brug bare gruppe efter for at få optællingerne efter grupper. Opdatering:da du har de samme nøgler i både 4a- og 4b-tabeller, og du vil opsummere dem i ét output, har du brug for en overordnet sum eller optælling afhængigt af den underforespørgsel, du bruger

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

Alternativt kan du kombinere 4a og 4b med en union alt sammen i en underforespørgsel og slutte sig til den på tbhari-tabellen, og du kan bruge count() med group by på underforespørgslen på den måde, fordi underforespørgslen vil inkludere alle rækker fra begge tabeller.

Men den måde, jeg skrev eksempelkoden på, kan du drage fordel af de eksisterende indekser, mens du slutter dig til tabellerne. Hvis du først kombinerer dem med union og derefter gør joinforbindelsen, vil der ikke blive brugt nogen indekser for joinforbindelsen.




  1. CakePHP 4.0 database konfiguration

  2. SQL - Call Stored Procedure for hver post

  3. Opretter forbindelse til SQL Server 2012 ved hjælp af sqlalchemy og pyodbc

  4. Vil du kombinere to forespørgsler for at kontrollere for dubletter i MySQL?