Problemas no select

26/11/2003

0

Ola a todos...

Tenho 2 tabelas com as seguintes estruturas:

Tabela: Relatorio_visitas
codusuario, int
data_visita, datetime
tipo_visita, nvarchar(50)

Tabela: relatorio_visitas_tipo
codvisita: int
titulo: nvarchar(50)

A tabela relatorio_visitas_tipo tem os seguintes dados:
codvisita: 1 titulo: problemas
codvisita: 2 titulo: venda
codvisita: 3 titulo: demonstracao
codvisita:4 titulo: instalacao

o usuario entra com o seguintes dados na tabela relatorio_visitas:
codusuario: 16 data_visita: 20/11/2003 tipo_visita: 3
codusuario: 16 data_visita: 21/11/2003 tipo_visita: 1, 2
codusuario: 16 data_visita: 21/11/2003 tipo_visita: 2
codusuario: 14 data_visita: 22/11/2003 tipo_visita: 1, 2, 4
codusuario: 16 data_visita: 22/11/2003 tipo_visita: 2, 3
codusuario: 14 data_visita: 22/11/2003 tipo_visita: 4
codusuario: 16 data_visita: 23/11/2003 tipo_visita: 1, 2, 3, 4
codusuario: 14 data_visita: 23/11/2003 tipo_visita: 3

a questao e a seguinte com eu faco para procurar todos os registro do usuario com o codigo 16 e separar e agrupar e totalizar os tipos de visitas. O resultado q eu espero e este:
codusuario: 16 data_visita: 20/11/2003 codvisita: 3 totvisitas: 1
codusuario: 16 data_visita: 21/11/2003 codvisita: 1 totvisitas: 1
codusuario: 16 data_visita: 21/11/2003 codvisita: 2 totvisitas: 2
codusuario: 16 data_visita: 22/11/2003 codvisita: 2 totvisitas: 1
codusuario: 16 data_visita: 22/11/2003 codvisita: 3 totvisitas: 1
codusuario: 16 data_visita: 23/11/2003 codvisita: 1 totvisitas: 1
codusuario: 16 data_visita: 23/11/2003 codvisita: 2 totvisitas: 1
codusuario: 16 data_visita: 23/11/2003 codvisita: 3 totvisitas: 1
codusuario: 16 data_visita: 23/11/2003 codvisita: 4 totvisitas: 1

Obrigado.


Mr_joni

Mr_joni

Responder

Posts

04/12/2003

Marcelo.c

Caro Colega,

Não me recordo totalmente, mas a principio, você terá que fazer um
select indicando os campos desejados, e agrupando-os pelo campo do quel você quer o Grupo de informações, em seguida, a soma da quantidade de itens de cada grupo deverá ser feita pela cláusula With rollup

mais ou menos assim:

Select campo1, campo2,campo3,campo4 from ´NOME TABELA´
---(Caso queira alguma condição, informar a clausula ´WHERE´)
GROUP BY campo1..2..3..ou 4 --- (para agrupar os dados desejados )
WITH ROLLUP ----(para contagem registros dos campos agrupados)


Responder

09/12/2003

Fabricio_saldanha

Caro Colega,

não sei se entendi direito mas o seu campo tipo_visita possui mais de um valor, ou seja pode ser preenchido com 1, 1 e 2, 2 3 e 4, e assim por diante. Primeiro que isso vai contra as formas de normalização segundo da forma como esta modelado você não tem como extrair as informações do jeito que você quer por meio de um select com group by você teria que ter um programa ou uma procedure que antes de gerar o select quebrasse o conteudo do campo. Minha Sugestão é que ao inves de preencher o campo com 1 e 2 por exemplo você gere um registro para cada ocorrencia e utilize o select abaixo para recuperar a informação.

select codusuario, data_visita, tipo_visita, count(*)
from Relatorio_visitas
group by codusuario, data_visita, tipo_visita

espero ter ajudado.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar