Select 数据以及来自另一个 table 的数据计数

Select data with count of data from another table

我有两个 table:“工作”和 'clients'。

clients table 看起来像这样:

/----+------\
| id | name |
+----+------+
| 1  | Ben  |
| 2  | Max  |
\----+------/

jobs table:

/----+-----------+--------\
| id | client_id | status |
+----+-----------+--------+
| 1  |     1     |  alpha |
| 2  |     1     |  beta  |
| 3  |     1     |  beta  |
| 4  |     2     |  beta  |
\----+-----------+--------/

我想创建一个语句,将 return 客户的名称以及每个状态出现的次数,如下所示:

/------+-------+------\
| name | alpha | beta |
+------+-------+------+
| Ben  |   1   |   2  |
| Max  |   0   |   1  |
\------+-------+------/

我不要求在没有值的地方有一个 0。

我已经尝试 SELECT name, (SELECT status FROM jobs WHERE client_id = clients.id) FROM clients 但它 return 在子查询中不止一行。

这是一个带有解决方案的示例:http://sqlfiddle.com/#!9/80593/3

create table clients (id int, name varchar(10));
insert into clients values (1, 'Ben'), (2, 'Max');

create table jobs (id int, client_id int, status varchar(10));
insert into jobs values (1, 1, 'alpha'), (2, 1, 'beta'), (3, 1, 'beta'), (4, 2, 'beta');

select 
  clients.name, 
  sum(case when jobs.status = 'alpha' then 1 else 0 end) alpha,
  sum(case when jobs.status = 'beta' then 1 else 0 end) beta
from jobs
inner join clients 
  on jobs.client_id = clients.id
group by clients.name;