Получить текущий статус на основе общего количества - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть проблема с выполнением условия (если не в другом случае) для запроса mysql.

Вкратце, у меня есть 3 таблицы, которые связаны друг с другом.

m_shift_schedule    site_shift_schedule      m_ticket
================    ===================     ============
* shift_id   ======> * shift_id             * ticket_id
* start_time         * shift_date           * ticket_status
* end_time           * user_id   ========>  * ticket_served_by

Мой запрос сейчас:

SELECT user_id
FROM site_shift_schedule
LEFT JOIN m_shift_schedule ON site_shift_schedule.shift_id = m_shift_schedule.shift_id
WHERE site_shift_schedule.shift_date =  '2019-02-11';

enter image description here

Что мне делать, если я хочу, чтобы выходной сигнал стал таким?

Idle = m_ticket.ticket_status (4 или 5 или 6) и счетчик итогов m_ticket.ticket_served_by <2 </p>

Busy = m_ticket.ticket_status (4 или 5 или 6) и счетчик итогов m_ticket.ticket_served_by = 2

перегрузка =m_ticket.ticket_status (4, 5 или 6) и число детей m_ticket.ticket_served_by> 2

      user_id                           Status
  =============================       ============
 ismail.rahman.saanin@random.co          Idle
 lutfi.aldi.nugroho@random.co            Busy

Помогите, ребята, спасибо.,.

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете попробовать использовать CASE WHEN Expression и Group By

SELECT user_id,
case when count(m_ticket.ticket_served_by)<2 then 'idle' 
     when count(m_ticket.ticket_served_by)=2 then 'Busy' 
     when count(m_ticket.ticket_served_by)>2 then 'Overload' end as status
FROM site_shift_schedule
LEFT JOIN m_shift_schedule ON site_shift_schedule.shift_id = m_shift_schedule.shift_id
left join m_ticket on site_shift_schedule.user_id=m_ticket.ticket_served_by
WHERE site_shift_schedule.shift_date =  '2019-02-11' and m_ticket.ticket_status in (4,5,6)
group by user_id
...