我有一个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,'%)
任何想法?