Duvida Query
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
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
Curtidas 0
Respostas
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?
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
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..
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
21/01/2009
Valeu jair deu certinho ....
Abraços
Alexandre
Abraços
Alexandre
GOSTEI 0