Array
(
)

Problemas no resultado da select

Mr_joni
   - 01 dez 2003

Ola a todos

Tenho uma select tipo esta: select count(*) as total where codusuario=15, a questao e quando nao existe nenhum usuario com o codigo 15 ele retorna como EOF eu preciso e tem que retornar 0 e nao EOF existe como fazer isto?

Mariah
   - 01 dez 2003

Ola, segue uma sugestão:

select nome_usuario,count(xx) from tabusu left outer join outra tab on codusuario=codusuariooutratab group by nome_usuario;

isto retornaria algo tipo

usuario1 10
usuario2 5
usuario3 0

Espero ter auxiliado.
Mariah

Anderson_dpa
   - 01 dez 2003

Crie uma Stored Procedure com o seguinte código:

If not Exists(Select count(*) from tabelatal where codfuncionario=15)
begin
Declare @varTotal
Set @varTotal= 0
end

Grande abraço
Anderson
andersondpa@hotmail.com

Mr_joni
   - 02 dez 2003

Perdao a todos eu me expressei muito mal sobre a minha duvida.

Vou tentar refazê-la. Vamos lá.

Tenho tres tabelas.
Primeria: visitas
codvisita
codusuario: int
data_visita: datetime

Segunda: vistas_tipo
codigo: int
titulo: nvarchar(50)

Terceira: visita_opcoes
codvisita: int
tipo_visita: int

Exemplo de dados:

visitas_tipo:
codigo: 1 titulo: rotina
codigo: 2 titulo: nova
codigo:3 titulo: demonstracao
codigo: 4 titulo: instalacao

visitas:
codusuario: 15 data_visita: 27/11/2003 codvisita: 01
codusuario: 15 data_visita: 27/11/2003 codvisita: 02
codusuario: 15 data_visita: 27/11/2003 codvisita: 03
codusuario: 15 data_visita: 28/12/2003 codvisita: 04
codusuario: 15 data_visita: 28/12/2003 codvisita: 05
codusuario: 15 data_visita: 27/11/2003 codvisita: 06

visitas_opcoes
codvisita: 01 tipo_vista: 1
codvisita: 01 tipo_vista: 3
codvisita: 01 tipo_vista: 4
codvisita: 02 tipo_vista: 1
codvisita: 03 tipo_vista: 1
codvisita: 04 tipo_vista: 2
codvisita: 04 tipo_vista: 4
codvisita: 05 tipo_vista: 1
codvisita: 06 tipo_vista: 1

Quando eu faco esta select:

SELECT COUNT(visitas_opces.tipo) AS total, visitas_tipo.titulo, visitas_opcoes.tipo, MONTH(visitas.data_vista) AS mes
FROM visitas_tipos ´&_
INNER JOIN visitas ON visitas_opcoes.codvisita = visitas.codvisita
INNER JOIN visitas_tipo ON visitas_opcoes.tipo_visita = visitas_tipo.codigo
WHERE (visitas.data_vista BETWEEN ´11/27/2003´ AND ´11/28/2003´) AND (visitas.codusuario = 15) AND (visitas_tipo.codigo = 1)
GROUP BY MONTH(visitas.data_vista), visitas_opcoes.tipo, visitas_tipo.titulo
ORDER BY MONTH(visitas.data_visita)´

Esta select e colocada dentro de um loop q faz ela verificar todos os tipos existentes na tabela visitas_tipo. A questao e a seguinte por exemplo ela me retorna num dado momento o seguinte resultado:

Total titulo tipo mes
4 Rotina 1 11 <= referente a visita 1
1 Demo.. 3 11 <= referente a visita 1
1 Inst... 4 11 <= referente a visita 1
1 Rotina 1 11 <= referente a visita 2
1 Rotina 1 11 <= referente a visita 3
1 Rotina 1 11 <= referente a visita 6
1 Nova 1 12 <= referente a visita 4
1 Inst... 1 12 <= referente a visita 4
1 Rotina 1 12 <= referente a visita 5

Este resultado esta correto so q eu preciso q ele me retorne os campos titulo q faltarao com o resultado 0. Isto e para cada visita devera ter 4 respostas, Rotina, Nova, Instalacao, Demonstracao.

espero ter me explicado melhor agora.