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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage