2016-03-05 4 views
1

Я создал таблицу, где на дату будет введено 3 состояния, разрешено, не разрешено и включено. Я создал следующий запрос из этого. Я хочу создать гистограмму, которая должна показывать 3 бара статуса.Inner Join mysql in single table

select a.date, a.Solved,b.Unsolved, c.OnHold 
from (select count(prob_stat) as Solved, date from delivery 
where prob_stat='Solved' group by date) a 
inner join (select count(prob_stat) as Unsolved, date from delivery 
where prob_stat='Unsolved' group by date) b on a.date=b.date 
inner join (select count(prob_stat) as OnHold, date from delivery 
where prob_stat='OnHold' group by date) c on a.date=c.date 

но он не работает, я вижу только 1 запись в результате. Может ли кто-нибудь помочь?

Pravin

+1

даты Sample и ожидаемые результаты будут необходимы, чтобы реально помочь – zzevannn

+0

Я ищу выход в ниже: Дата | Решено | Неразрешенные | OnHold 2016-02-20 | 1 | 2 | 0 2016-02-21 | 2 | 1 | 1 –

+0

Я ищу выходные как это Дата | Решено | Неразрешенные | OnHold 2016-2-15 | 2 | 1 | 1 2016-2-16 | 2 | 1 | 0 –

ответ

0

Попробуйте это.

Использование CASE выражение.

Запрос

select `date`, 
sum(case prob_stat when 'Solved' then 1 end) as Solved, 
sum(case prob_stat when 'Unsolved' then 1 end) as Unsolved, 
sum(case prob_stat when 'OnHold' then 1 end) as OnHold 
from delivery 
group by `date`; 
+0

Это сработало ... Большое спасибо .... –

0

Вы можете попробовать, как ... Это работает отлично

SELECT 
    date, 
    COUNT(CASE prob_stat WHEN 'Solved' THEN 1 END) AS Solved, 
    COUNT(CASE prob_stat WHEN 'Unsolved' THEN 1 END) as Unsolved, 
    COUNT(CASE prob_stat WHEN 'OnH' THEN 1 END) AS OnHold 
FROM delivery 
GROUP BY date;