MySQL データベースに 2 つのテーブルがあります。最初のものには、部門名のリストがあります。
departments
abbreviation | name
-------------|-------------
ACC | accounting
BUS | business
...
2 番目のテーブルには、学科の略語を含む名前を持つコースのリストがあります。
courses
section | name
-------------|-------------
ACC-101-01 | Intro to Accounting
ACC-110-01 | More accounting
BUS-200-02 | Business etc.
...
departments
テーブルの各行について、テーブル内の何行がcourses
私が持っている略語に似ているかをカウントするクエリを書きたいと思います。このようなもの:
abbreviation | num
-------------|--------------
ACC | 2
BUS | 1
...
クエリを使用して、1 つの個別の部門に対してこれを行うことができます
SELECT COUNT(*) FROM courses WHERE section LIKE '%ACC%'
(gives me 2)
PHP でループして上記のクエリを何度も実行することもできますが、1 回のクエリで実行することをお勧めします。これは私が考えている疑似コードです...
SELECT department.abbreviation, num FROM
for each row in departments
SELECT COUNT(*) AS num FROM classes WHERE section LIKE CONCAT('%',departments.abbreviation,'%)
何か案は?