如何获得与用户相关的类别明智的价值?

时间:2011-10-28 17:16:16

标签: php mysql

我正在使用PHP和MySQL开发日记管理脚本。我陷入了一种情况,我将在下面提出一个假设的表结构和我的要求。

 
|---------------|--------------|
|  User Name    |   Status     |
|---------------|--------------|
|  John         |   Open       |
|---------------|--------------|
|  John         |   Assigned   |
|---------------|--------------|
|  John         |   Closed     |
|---------------|--------------|
|  Miller       |   Assigned   |
|---------------|--------------|
|  Miller       |   Assigned   |
|---------------|--------------|
|  Smith        |   Closed     |
|---------------|--------------|

我期待如下所示的最终网页输出。

|---------------|--------------|--------------|--------------|
|  User Name    |   Open       |  Assigned    | Closed       |
|---------------|--------------|--------------|--------------|
|  John         |      1       |       1      |     1        |
|---------------|--------------|--------------|--------------|
|  Miller       |      0       |       2      |     0        |
|---------------|--------------|--------------|--------------|
|  Smith        |      0       |       0      |     1        |
|---------------|--------------|--------------|--------------|

请建议使用MySQL查询(使用GROUP BY)本身是否可以生成这个现成的或者我必须得到一些编程逻辑的帮助。如果是这样我应该编码什么?我非常无奈。我可以在这里提供整个脚本,但我不是为了避免混淆。

1 个答案:

答案 0 :(得分:2)

select `User Name`,
    sum(case when Status = 'Open' then 1 end) as Open,
    sum(case when Status = 'Assigned' then 1 end) as Assigned,
    sum(case when Status = 'Closed' then 1 end) as Closed
from Status
group by `User Name`