sql >> Database >  >> RDS >> Mysql

Selecteer telafhankelijke rijen uit meerdere tabellen met unie

U heeft uw zoekopdracht te ingewikkeld gemaakt, gebruik gewoon group by om de tellingen per groep te krijgen. Update:aangezien je dezelfde sleutels hebt in zowel 4a- als 4b-tabellen en je ze in één uitvoer wilt samenvatten, heb je een overkoepelende som of telling nodig, afhankelijk van de subquery die je gebruikt

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

U kunt ook 4a en 4b combineren met een unie allemaal in een subquery en die toevoegen aan de tbhari-tabel en u kunt count() gebruiken met group by op de subquery op die manier omdat de subquery alle rijen van beide tabellen zal bevatten.

Door de manier waarop ik de voorbeeldcode heb geschreven, kunt u echter profiteren van de bestaande indexen terwijl u zich bij de tabellen voegt. Als je ze eerst combineert met union en daarna de join doet, worden er geen indexen gebruikt voor de join.




  1. Hoe een datetime op te slaan in MySQL met tijdzone-info

  2. De afzonderlijke som van een samengevoegde tabelkolom verkrijgen

  3. hive.HiveImport:FAILED:SemanticException [Fout 10072]:Database bestaat niet:

  4. Column Store-plannen