Я разрабатываю сценарий управления дневниками, используя PHP и MySQL. Я застрял в ситуации, для которой я представляю ниже гипотетическую структуру таблицы и мое требование.
| --------------- | -------------- | | Имя пользователя | Статус | | --------------- | -------------- | | Джон | Открыть | | --------------- | -------------- | | Джон | Назначено | | --------------- | -------------- | | Джон | Закрыто | | --------------- | -------------- | | Миллер | Назначено | | --------------- | -------------- | | Миллер | Назначено | | --------------- | -------------- | | Смит | Закрыто | | --------------- | -------------- |
Я ожидаю, что окончательная версия веб-страницы будет выглядеть следующим образом.
| --------------- | -------------- | -------------- | --- ----------- | | Имя пользователя | Открыть | Назначено | Закрыто | | --------------- | -------------- | -------------- | --- ----------- | | Джон | 1 | 1 | 1 | | --------------- | -------------- | -------------- | --- ----------- | | Миллер | 0 | 2 | 0 | | --------------- | -------------- | -------------- | --- ----------- | | Смит | 0 | 0 | 1 | | --------------- | -------------- | -------------- | --- ----------- |
Пожалуйста, предложите, может ли использование MySQL-запроса (с использованием GROUP BY) сделать это готовым, или мне нужно получить небольшую часть логики программирования. Если да, то что я должен кодировать? Я очень беспомощна. Я мог бы предоставить весь сценарий здесь, но я не делал этого, чтобы избежать путаницы.
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`