Fórum Duvida Query #27030

21/01/2009

0

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

Responder

Posts

21/01/2009

Jair Bg

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?


Responder

Gostei + 0

22/01/2009

Jair Bg

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..


Responder

Gostei + 0

22/01/2009

Alexandre_fsa

Valeu jair deu certinho ....

Abraços

Alexandre


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar