Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz wiersze zależne od liczby z wielu tabel ze złączem

Skomplikowałeś swoje zapytanie, po prostu użyj grupy według, aby uzyskać obliczenia według grup. Aktualizacja:ponieważ masz te same klucze w obu tabelach 4a i 4b i chcesz je podsumować w jednym wyniku, potrzebujesz nadrzędnej sumy lub liczby w zależności od użytego podzapytania

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

Alternatywnie, połącz 4a i 4b z unią wszystko w podzapytaniu i dołącz do tego w tabeli tbhari i możesz w ten sposób użyć count() z group by w podzapytaniu, ponieważ podzapytanie będzie zawierało wszystkie wiersze z obu tabel.

Jednak sposób, w jaki napisałem przykładowy kod, pozwala skorzystać z istniejących indeksów podczas dołączania do tabel. Jeśli połączysz je najpierw z unionem, a następnie wykonasz łączenie, to żadne indeksy nie będą używane do łączenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy odpytywanie z bazy danych SQL zamiast pliku do aplikacji czatu zwiększy wydajność?

  2. Połącz (scal) dwie kolumny z dwóch tabel w jednym zapytaniu SQL

  3. Podejścia do shardingu MySQL?

  4. Zapytanie zagnieżdżone w węźle js przy użyciu mysql

  5. Jak zamawiać według miejsca na polach w Laravel