Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Public2004

[Resolvido] Somar grupos de registros

Recommended Posts

Seguinte,

 

Tenho vários registros em uma tabela com campos tipo: seção, noticia, clique.

Somo nesta tabela, seções e cliques, por ex, quantidades de noticias na seção esporte e quantidade de cliques dados nas notícias referente a esta seção.

Bom até aqui beleza:

strSQL = "SELECT SUM(cliques) AS total, COUNT(cliques) AS noticias FROM tb_jornal WHERE secao = 'esporte'"
O problema é que tenho várias seções, e como posso otimizar essa instrução, sem ter que criar um SELECT para cada seção, pois tenho que mostrar estes resultados na mesma página.

 

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se você usar o GROUP BY?

 

Já tentou?

 

Quando você vê esses resultados, você clica em algum link?

porque senão, pode colocar um Querystring e montar o seu Select.

 

Vamos resolver isso ai..

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cabo Gel - Vi o script no laboratório, pensei, pesquisei e não consegui encontrar uma solução... Até fiz umas tentativas aqui utilizando um loop, mas não rolou...

 

juliano 11 - Os resultados serão apresentados na mesma tela, e o retorno do SELECT é armazenado em variáveis para cálculos que serão utilizados na apresentação de números (médias cliques).

Apresento também 20 títulos de notícias (com informações ref. ao Select acima), mas isso em outro SELECT e com seus respectivos links.

 

O SELECT funciona, só que tenho 15 seções como esporte, cultura, política, etc... e quero otimizá-lo, mas ainda não descobri como, aceito sugestões e idéias.

 

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se cada seção for páginas ou lugares diferentes você pode criar funções para cada seção

assim:

 

Function SQLSecao(campo_sum, campo_count, tabela, nome_secao)
strSQL = "SELECT SUM(cliques) AS "&campo_sum&", COUNT(cliques) AS "&campo_count&" FROM "&tabela&" WHERE secao = '"&nome_secao&"'"
End Function

ai você chama a função assim:

 

<%
Call SQLSecao("total", "noticias", "tb_jornal", "esporte")

If Not strSQL.Eof Then
........ resto do codigo .....
End If
%>

assim poderá usar em vários lugares chamado ela pelo Call

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não fui muito claro no tópico...

Ted K, sua função é muito útil e até já utilizo em outros projetos, mas nesse caso não me ajuda muito, pois preciso dos resultados na mesma tela.

 

Vou tentar ser mais claro. Preciso montar 15 SELECT na mesma página (como no exemplo que coloquei, alterando apenas a seção), então estou procurando otimizar essa rotina.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que você é que nao entendeu.

 

assim você monta um milhão na mesma pagina, só muda a secão:

 

Call SQLSecao("total", "noticias", "tb_jornal", "esporte")

Call SQLSecao("total", "noticias", "tb_jornal", "cultura")

Call SQLSecao("total", "noticias", "tb_jornal", "lazer")

Call SQLSecao("total", "noticias", "tb_jornal", "entretenimento")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ted K, obrigado pela atenção. Eu entendi a função, mas como disse eu quero otimizar/dinamizar a instrução, pois não poderei editar o código quando houver alguma alteração na tabela (seções). Utilizando a função ou escrevendo a instrução dá na mesma...

 

O que penso é primeiro montar um "select distinct" e verificar quantas e quais "seções" eu tenho na tabela, guardar os valores em variáveis e aí montar a instruçãoSQL com essas variáveis (seções), isso é possível?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim...

 

exato, e use a função para alimentar o resultado, essa idéia ficou ótima, assim otimizará o tempo de execução

Compartilhar este post


Link para o post
Compartilhar em outros sites

strSQL = "SELECT secao, SUM(cliques) AS total, COUNT(cliques) AS noticias FROM tb_jornal 

GROUP BY secao"

Compartilhar este post


Link para o post
Compartilhar em outros sites

So recuperar o que selecionou

 

strSQL = "SELECT secao, SUM(cliques) AS total, COUNT(cliques) AS noticias FROM tb_jornal

GROUP BY secao"

 

Secao = NOMERECORDSET("secao")

total= NOMERECORDSET("total")

noticias = NOMERECORDSET("noticias ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso terá que ser feito em um laço

 

Agora me responde voce quer armazenar ou exibir estes dados?

 

se for armazenar terá que trabalhar com algo como array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mário, é isso, preciso armazenar e exibir os dados, imagino mesmo que precise construir uma array, mas aí é que eu não estou conseguindo fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai ter que ser uma array com numero variavel de registros terá que redimenciona-lo a cada ciclo do loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, só para finalizar o tópico, me enrolei um pouco com o array (redim), então mudei um pouco a estrutura do projeto e joguei tudo em um laço (do while).

 

Vlw galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom qeu resolveu entao

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.