Выберите с учетом, когда + присоединиться, MYSQL - PullRequest
0 голосов
/ 28 сентября 2018

Ребята, вы можете мне помочь в этом случае?Я хочу выбрать и изменить результаты:

Мой код выглядит следующим образом:

$USER_STORY = $this->lang->line('application_status_change_user_story');
$TO_DO = $this->lang->line('application_status_change_to_do');
$IN_PROGRESS = $this->lang->line('application_status_change_in_progress');
$DONE = $this->lang->line('application_status_change_done');
$UNDONE = $this->lang->line('application_status_change_undone');

    SELECT sum(project_has_tasks.estimated_hours) as val, project_has_tasks.name, 
    project_has_tasks.start_date,
    project_has_tasks.due_date,
    project_has_tasks.progress,
    TIME_FORMAT(SEC_TO_TIME(sum(project_has_tasks.time_spent)),'%k.%i') 
    as total_time, users.id, users.firstname, users.lastname,(case
             when 'user_story' then '$USER_STORY'
             when 'to_do' then '$TO_DO'
             when 'in_progress' then '$IN_PROGRESS'
             when 'done' then '$DONE'
             when 'undone' then '$UNDONE'
             else 'NOTHING'
          end) as status
    FROM project_has_tasks
    RIGHT JOIN users ON project_has_tasks.user_id
     = users.id WHERE project_has_tasks.project_id ='99' 
    GROUP BY project_has_tasks.id ASC

Что изменить, чтобы получить правильные результаты?Теперь я ничего не получаю в столбце статуса, но без ошибок.

1 Ответ

0 голосов
/ 28 сентября 2018

Я думаю, что ваше утверждение case неверно. Нет условия, проверяющего, поэтому только оно возвращает последний оператор else

SELECT sum(project_has_tasks.estimated_hours) as val, project_has_tasks.name, 
project_has_tasks.start_date,
project_has_tasks.due_date,
project_has_tasks.progress,
TIME_FORMAT(SEC_TO_TIME(sum(project_has_tasks.time_spent)),'%k.%i') 
as total_time, users.id, users.firstname, users.lastname,(case
         when project_has_tasks.status = 'user_story' then '$USER_STORY'
         when project_has_tasks.status = 'to_do' then '$TO_DO'
         when project_has_tasks.status = 'in_progress' then '$IN_PROGRESS'
         when project_has_tasks.status = 'done' then '$DONE'
         when project_has_tasks.status = 'undone' then '$UNDONE'
         else 'NOTHING'
      end) as status
FROM project_has_tasks
RIGHT JOIN users ON project_has_tasks.user_id
 = users.id WHERE project_has_tasks.project_id ='99' 
GROUP BY project_has_tasks.id ASC
...