我在 MySQL 数据库中有两个表。第一个有一个部门名称列表。
departments
abbreviation | name
-------------|-------------
ACC | accounting
BUS | business
...
第二个表有一个课程列表,其名称包含部门的缩写。
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
...
我可以通过查询为一个单独的部门执行此操作
SELECT COUNT(*) FROM courses WHERE section LIKE '%ACC%'
(gives me 2)
尽管我可以在 PHP 中循环并多次执行上述查询,但我宁愿在单个查询中执行此操作。这是我正在考虑的伪代码...
SELECT department.abbreviation, num FROM
for each row in departments
SELECT COUNT(*) AS num FROM classes WHERE section LIKE CONCAT('%',departments.abbreviation,'%)
有任何想法吗?