2015-12-26 2 views
0

Я бегу следующий запрос,MySQL JOIN с тем, где положение и группа по количеству

SELECT status.status_id, status.status_name, COUNT(workbin.status_id) 
FROM `status` 
LEFT JOIN `workbin` ON workbin.status_id = status.status_id 
GROUP BY status.status_id 

и получил выход

status_id status_name count 
1 New    44 
2 On Hold   1 
3 In Analysis  2 
4 In Development 12 
5 In Testing  17 
6 In Release  2 
7 Completed  151 
8 In Review  0 
9 Unit Testing  0 
11 Rework   0 
12 Reopen   0 

Теперь мне нужно добавить где положение в этом запросе, чтобы извлекать данные на основе идентификатора пользователя в таблице workbin. Таким образом, результат покажет только счетчик для пользователя. Идентификатор пользователя также сохраняется в таблице workbin.

Если я добавить где положение WHERE workbin . task_assigned_id = 37 и нашел несколько status_id и status_name отсутствуют (которые имеют значение 0). Но мне нужно все количество статусов для назначенного пользователю задания (workbin.task_assigned_id).

+1

Рекомендую проводить время на сайтах, где начинаются сайты. Это не одно. – Drew

+0

@ Drew Я думаю, что это место для задавания вопросов, когда кто-то не может найти решения после того, как он пробовал себя, что делает здесь OP. Постарайтесь понять вопрос, и вы узнаете, где он застрял. –

+0

ok fair enuf. btw добавить что-то в вашу группу по статье – Drew

ответ

0

Это потому, что в пункте WHERE вы указываете только те записи, которые имеют значение task_assigned_id = 37 в workbin Таблица. Таким образом, вы не можете получить строки, для которых у вас нет строки в таблице workbin (даже если она находится в таблице status.) Решение может быть примерно таким, чтобы сохранить условия вашего предложения WHERE в части LEFT JOIN:

SELECT status.status_id, status.status_name, COUNT(workbin.status_id) 
FROM `status` 
LEFT JOIN `workbin` ON workbin.status_id = status.status_id AND workbin.task_assigned_id= 37 
GROUP BY status.status_id 
Смежные вопросы