Zählen von Zeilen in einer Tabelle basierend auf einer anderen Tabelle in MySQL
Ich habe zwei Tabellen in einer MySQL-Datenbank. Der erste hat eine Liste von Abteilungsnamen.
departments
abbreviation | name
-------------|-------------
ACC | accounting
BUS | business
...
Die zweite Tabelle enthält eine Liste von Kursen mit Namen, die die Abkürzung der Abteilung enthalten.
courses
section | name
-------------|-------------
ACC-101-01 | Intro to Accounting
ACC-110-01 | More accounting
BUS-200-02 | Business etc.
...
Ich möchte eine Abfrage schreiben, die für jede Zeile in derdepartments
Tabelle, geben Sie mir eine Zählung, wie viele Zeilen in dercourses
Tabelle sind wie die Abkürzung, die ich habe. So etwas wie dieses:
abbreviation | num
-------------|--------------
ACC | 2
BUS | 1
...
Ich kann dies für eine einzelne Abteilung mit der Abfrage tun
SELECT COUNT(*) FROM courses WHERE section LIKE '%ACC%'
(gives me 2)
Obwohl ich mich in PHP durchschleifen und die obige Abfrage viele Male durchführen könnte, würde ich es lieber in einer einzelnen Abfrage tun. Dies ist der Pseudocode, an den ich denke ...
SELECT department.abbreviation, num FROM
for each row in departments
SELECT COUNT(*) AS num FROM classes WHERE section LIKE CONCAT('%',departments.abbreviation,'%)
Irgendwelche Ideen?