Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете зависещи от броя редове от множество таблици с обединение

Прекалено сте усложнили заявката си, просто използвайте group by, за да получите броя по групи. Актуализация:тъй като имате едни и същи ключове в таблици 4a и 4b и искате да ги обобщите в един изход, имате нужда от обща сума или брой в зависимост от подзаявката, която използвате

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

Като алтернатива, комбинирайте 4a и 4b с обединение всичко в подзаявка и я присъединете към таблицата tbhari и можете да използвате count() с group by в подзаявката по този начин, защото подзаявката ще включва всички редове от двете таблици.

Но по начина, по който написах примерния код, можете да се възползвате от съществуващите индекси, докато се присъединявате към таблиците. Ако ги комбинирате първо с обединение и след това направите съединяването, тогава няма да се използват индекси за обединяването.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилен начин за съхраняване на данни в SQL база данни, когато колоните са неизвестни

  2. Как да дефинирате персонализиран ред в клауза ORDER BY?

  3. trustCertificateKeyStoreUrl срещу clientCertificateKeyStoreUrl

  4. Неизвестна колона в клауза Къде

  5. Активиране на общ дневник на заявките на MySQL с JDBC