2013-12-20 3 views
0

Я написал sql для получения информации о билетах для каждого пользователя в базе данных.sql для отображения поля запроса мудрый

select u.realname,count(t.id) as ct,t.Status 
from Tickets t,Users u 
where u.id=t.Owner and (t.status='New' or t.status='Stalled' or t.status='Open') 
group by u.realname,t.status; 

дает выход как этот

| Enoch Root   |  1 | new  | 
| Enoch Root   |  1 | stalled | 
| xyz Chan   |  1 | open | 
| Jim     | 22 | stalled | 

но то, что я ищу, пользователей от статуса

как

 open stalled new 
root 1  10  14 

Пожалуйста, дайте мне знать

ответ

0
select u.realname, 
    sum(if(t.status = 'New', 1, 0)) as new, 
    sum(if(t.status = 'Stalled', 1, 0)) as stalled, 
    sum(if(t.status = 'Open', 1, 0)) as open 
from Tickets t, Users u 
where 
    u.id = t.Owner and 
    t.status in ('New', 'Stalled', 'Open') 
group by u.realname 
0
SELECT 
    u.realname, 
    SUM(t.status='Open') AS `Open`, 
    SUM(t.status='Stalled') AS `Stalled`, 
    SUM(t.status='New') AS `New` 
FROM Tickets t INNER JOIN Users u 
    ON u.id=t.Owner 
WHERE (t.status='New' OR t.status='Stalled' OR t.status='Open') 
GROUP BY 
    u.id, u.realname 
Смежные вопросы