Duvida Query

PostgreSQL

21/01/2009

Galera tenho um programa aqui de chamados e não consigo fazer uma query que pega os usuarios do banco e os chamados EM ABERTO que eles estão atendendo.

Fiz a query mais o problema é que quando o usuário não está atendento nenhum chamado ele não aparece no resultado eu gostaria que aparecesse com 0 na frente para saber que ele não está atendendo nenhum chamado.


SELECT
u.codigo AS codigo_usuario,
nome,
count(c.codigo) AS total
FROM usuario u
LEFT JOIN chamado c on cod_usuario_executor = u.codigo
GROUP BY u.codigo, u.nome, cod_usuario_executor, data_fechamento
HAVING data_fechamento IS NULL
ORDER BY nome


Alexandre_fsa

Alexandre_fsa

Curtidas 0

Respostas

Jair Bg

Jair Bg

21/01/2009

Boa Tarde veja um outro modo, desculpe mas não testei

SELECT u.codigo AS codigo_usuario
, nome
, (COALESCE(SELECT COUNT(c.codigo)
FROM chamado c
WHERE (cod_usuario_executor = u.codigo)
AND (data_fechamento IS NULL)), 0) AS total
FROM usuario u
ORDER BY nome

PS: chama todos os usuarios, e verifica se existe chamadas é isso?


GOSTEI 0
Jair Bg

Jair Bg

21/01/2009

Desculpe vou acertar retirando o COALESCE retirando do código
SELECT u.codigo AS codigo_usuario
, nome
, (SELECT COUNT(c.codigo)
FROM chamado c
WHERE (cod_usuario_executor = u.codigo)
AND (data_fechamento IS NULL)) AS total
FROM usuario u
ORDER BY nome

Agora sim seleciona todos os usuários é apresenta o que tiver numero de chamadas em aberto, e zero para os outros..


GOSTEI 0
Alexandre_fsa

Alexandre_fsa

21/01/2009

Valeu jair deu certinho ....

Abraços

Alexandre


GOSTEI 0
POSTAR