2015-07-06 2 views
-1

У меня есть две таблицы. job_table.условное число на mysql count

job_id job_type job_type  ***** 
1  1   Day   ***** 
2  2   Night 
3  3   Day & Night. 
4  3   Day & Night. 

и таблица task_entry.

task_entry_id job_type  task_option_type 
1    1    Day 
2    1    Day 
3    1    Day 
4    2    Night 
5    3    Day 
5    3    Night 
6    3    Day 
7    3    Night 

Если идентификатор работы - 3, то для Дня один и один для Ночи будет 2 записи. Else только один запись.

Я хочу, чтобы получить общее количество рабочих мест с task_entries, как это,

job_id  task_entry_count 
1   3 
2   1 
3   2 

То есть, если job_type является 3, то подсчет следует рассчитывать/2. (День & Ночь). Кол-во других должно быть нормальным.

+1

Вы пробовали что-нибудь? Пожалуйста, напишите, что вы пытались указать на некоторые усилия с вашей стороны. – kittykittybangbang

ответ

0

Вы можете получить количество каждого job_type так:

SELECT job_type, COUNT(*) AS task_entry_count 
FROM task_entry 
GROUP BY job_type; 

Как вы сказали, это удвоит количество когда job_type равно 3. Таким образом, чтобы объяснить, что вы можете просто использовать CASE заявление чтобы получить один или другой:

SELECT job_type, CASE WHEN job_type = 3 THEN COUNT(*)/2 ELSE COUNT(*) END AS task_count 
FROM task_entry 
GROUP BY job_type; 

Имейте в виду, что здесь мы делаем предположение, есть 2 записей для каждого job_id = 3. Если нет, вы получите обратно значение, как 2,5, как показано в мой SQL Fiddle example.

Смежные вопросы