2016-11-30 4 views
1

у меня есть две таблицы, подобные этим:MySQL Select Case - Сравнение между двумя таблицами

Table: case 

--------------------------------------------------- 
| id | company | managed | time | client | 
--------------------------------------------------- 
| 1 | apple | yes | 1412643785 | no | 
--------------------------------------------------- 
| 2 | barilla | no | 1412643785 | no | 
--------------------------------------------------- 
| 3 | google | no | 1412643785 | yes | 
--------------------------------------------------- 
| 4 | google | yes | 1412643785 | yes | 
--------------------------------------------------- 
| 5 | google | no | 1412643785 | yes | 
--------------------------------------------------- 


Table: language 

--------------------------- 
| id | company | lang | 
--------------------------- 
| 1 | apple | EN | 
--------------------------- 
| 2 | barilla | IT | 
--------------------------- 
| 3 | google | EN | 
--------------------------- 

У меня есть создание статистики/графики из этой таблетки, то извлечь следующую информацию для каждого месяца: * Количество случаи клиентов в месяц * Количество случаев управляемых в месяц * Общее количество случаев в месяц * Количество случаев итальянских компаний в месяц

для первых трех моментов, которые я не имею никаких проблем, и я сделали этот запрос:

SELECT FROM_UNIXTIME(time, '%Y-%M') as 'Month', 
    COUNT(CASE WHEN client = 'yes' THEN 1 ELSE NULL END) as 'Reports of a customer, 
    COUNT(CASE WHEN managed = 'yes' THEN 1 ELSE NULL END) as 'Managed cases', 
    COUNT(id) as 'Total reports' 
FROM case 
GROUP BY FROM_UNIXTIME(time, '%Y-%M') 
ORDER BY FROM_UNIXTIME(time, '%Y-%m') 

Но как я могу извлечь ежемесячное количество случаев, управляемых любой итальянской компанией?

Я пытался добавить эту часть запроса, но не выходит ...

COUNT(CASE WHEN case.company = language.company AND language.lang = 'IT' THEN 1 ELSE NULL END) as 'Italian Case', 

Можете ли вы мне помочь? Спасибо

+0

Вам нужно присоединиться к языковой таблице. –

ответ

1

Ваша мысль была права, просто необходимо, чтобы присоединиться к дополнительной таблице:

SELECT FROM_UNIXTIME(t.time, '%Y-%M') as 'Month', 
    COUNT(CASE WHEN t.client = 'yes' THEN 1 END) as 'Reports of a customer', 
    COUNT(CASE WHEN t.managed = 'yes' THEN 1 END) as 'Managed cases', 
    COUNT(t.id) as 'Total reports', 
    COUNT(CASE WHEN language.lang = 'IT' THEN 1 END) as 'Italian Case', 
FROM case t 
JOIN language ON language.company = t.company 
GROUP BY FROM_UNIXTIME(t.time, '%Y-%M') 
ORDER BY FROM_UNIXTIME(t.time, '%Y-%m') 

Пожалуйста, обратите внимание, что я удалил ELSE NULL от ваших дел, как это по умолчанию.

+0

Большое спасибо, он работает !! –

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