Count auf 2 related Tables

trophi20

Neuer Benutzer
Beiträge
2
Hallo,

ich habe 3 Tabellen:
  • MainTable (id, name)
  • Subtable1 (id, name, MainTableId)
  • Subtable2 (id, name, MainTableId)
Ich möchte eine Query schreiben, welche sämtliche Einträge aus der Maintable enthält, sowie zwei Spalten, wo jeweils die Anzahl der Einträge der jeweiligen SubTable mit entsprechender Verknüpfung vorhanden ist.

In allen Foreneinträgen, die ich bis jetzt gefunden habe, ist die SubTable2 über ein Field mit der SubTable1 verbunden. Bei mir sind die zwei Subtables aber unabhängig voneinander. Wenn ich einfach zwei (LEFT) JOINs ausführe, dann werden die Einträge der zwei Subtables kombiniert gezählt. Das soll aber nicht passieren.

Wie muss ich hierbei vorgehen?

Vielen Dank
 
Werbung:
Du könntest sowas nehmen:

Code:
select mt.*, 
       (select count(*) 
        from subtable1 s1
        where s1.main_table_id = mt.id) as table1_count,
       (select count(*) 
        from subtable2 s2
        where s2.main_table_id = mt.id) as table2_count
from main_table mt

Co-related sub-queries sind aber typischerweise recht langsam.
Das hier ist vermutlich schneller:

Code:
select mt.*, s1.table1_count, s2.table2_count
from main_table mt
  left join (
    select main_table_id, count(*) as table1_count 
    from subtable1 
    group by main_table_id
  ) s1 on s1.main_table_id = mt.id
  left join (
    select main_table_id, count(*) as table2_count
    from subtable2
    group by main_table_id
  ) s2 on s2.main_table_id = mt.id) as table2_count
 
Werbung:
Zurück
Oben