sql >> Databasteknik >  >> RDS >> Mysql

Välj antal beroende rader från flera tabeller med union

Du har överkomplicerat din fråga, använd bara grupp efter för att få räkningarna efter grupper. Uppdatering:eftersom du har samma nycklar i både 4a och 4b tabeller och du vill sammanfatta dem i en utdata, behöver du en övergripande summa eller räkning beroende på vilken underfråga du använder

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, kombinera 4a och 4b med en union, allt i en underfråga och gå med i den på tbhari-tabellen och du kan använda count() med group by på underfrågan på det sättet eftersom underfrågan kommer att inkludera alla rader från båda tabellerna.

Men hur jag skrev exempelkoden kan du dra nytta av de befintliga indexen medan du går med i tabellerna. Om du kombinerar dem först med union och sedan gör joinen kommer inga index att användas för joinen.




  1. GROUP_CONCAT returnerar NULL om något värde är NULL

  2. Allmänt fel:1615 Förberedd sats måste förberedas på nytt

  3. JSON_QUERY() vs JSON_VALUE() i SQL Server:Vad är skillnaden?

  4. Hur man visar Unicode-data med PHP