Ir para conteúdo

POWERED BY:

Arquivado

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

Buscopan

Problemas quando há Múltiplos Select Count e Group By juntos

Recommended Posts

Olá pessoal ...

tenho uma tabela de patrimônio de equipamentos que pega o código do equipamento (1 - CPU, 2 - Monitor, etc) de uma tabela de equipamentos.

 

 

a) Quando eu vou contar o TOTAL de cada equipamento, estou fazendo um recordset para cada um. Não teria um jeito de simplificar isso ?

 

Set rsCpu = Server.CreateObject("ADODB.RecordSet")rsCpu.Open("SELECT COUNT(patrimonio) as qtCpu FROM tbl_patrimonio WHERE cod_equipamento='2'"), conexaoSet rsMonitor = Server.CreateObject("ADODB.RecordSet")rsMonitor.Open("SELECT COUNT(patrimonio) as qtMonitor FROM tbl_patrimonio WHERE cod_equipamento='3'"), conexaoSet rsEstab = Server.CreateObject("ADODB.RecordSet")rsEstab.Open("SELECT COUNT(patrimonio) as qtEstab FROM tbl_patrimonio WHERE cod_equipamento='5'"), conexao...

 

b ) Quando eu vou exibir o TOTAL de equipamentos POR SETOR, acaba entrando num loop infinito.

 

Minha lógica:

 

// Total CPUs por SetorSet rs_T_C_S = Server.CreateObject("ADODB.RecordSet")rs_T_C_S.Open("SELECT COUNT(tbl_patrimonio.patrimonio) as qtCpu, tbl_setor.nome_setor  FROM tbl_patrimonio, tbl_setor WHERE tbl_patrimonio.cod_setor = tbl_setor.cod_setor AND cod_equipamento = '2' GROUP BY nome_setor ORDER BY nome_setor"), conexao<table class="table1"><tr><td class="table2"><b>Setor</b></td><td class="table2"><b>CPU</b></td><td class="table2"><b>Monitor</b></td><td class="table2"><b>Impressora</b></td><td class="table2"><b>Estabilizador</b></td><td class="table2"><b>Equipamentos</b></td></tr><% Do While not rs_T_C_S.eof %><tr><td class="table2"><%=rs_T_C_S("nome_setor")%></td><td class="table2"><%=rs_T_C_S("qtCPU")%></td><td class="table2"> </td><td class="table2"> </td><td class="table2"> </td><td class="table2"> </td></tr><%rs_T_C_S.MoveNext Looprs_T_C_S.Closeset rs_T_C_S = nothing%></table>

mas ai quando eu vou fazer o mesmo pra impressora, monitor, estabilizador, etc, não funciona ...

 

Alguém tem alguma sugestão ?

 

Valeu galera ... obrigado pela ajuda ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,deixa eu tentar expressar melhor ....eu precisava contar a quantidade de cpu, monitores, estabilizadores e impressoras de cada setor.fiz o select com group by mas ele só consegue me retornar um dos valores (por causa do where cod_equipamento = 2 'CPU). Tentei colocar um loop dentro do outro, mas ainda assim não consegui ...Alguém poderia me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não sei qual banco você está utilizando. Eu trabalho com Oracle. E quando quer trazer esse tipo de informação, na minha query eu utilizou a expressão UNION. Não sei se funcionará com seu banco, mas se funcionar, tenta o seguinte código:

Set rsCpu = Server.CreateObject("ADODB.RecordSet")rsCpu.Open("SELECT COUNT(patrimonio) as qtCpu FROM tbl_patrimonio WHERE cod_equipamento='2' union SELECT COUNT(patrimonio) as qtCpu FROM tbl_patrimonio WHERE cod_equipamento='3' union SELECT COUNT(patrimonio) as qtCpu FROM tbl_patrimonio WHERE cod_equipamento='5'"), conexao

Nessa select ele vai te trazer as informações de todos os equipamentos.

 

Um abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando o MySQL 4.xxxPutz ... não funcionou o Union ... quando eu mando exibir o registro que está no segundo select, diz que o rs não pode encontrar o item correspondente.Mesmo assim, amigo, muito obrigado pela ajuda ...Droga ... estou meio que desesperado ... e me parece que é um problema bobo ...Eu consigo contar as cpus por setor, os monitores por setor e tudo mais, em rs separados, mas quando eu tento juntar tudo num único rs, dá erro ...não sei como solucionar o meu problema ...Alguém tem uma idéia ? Mesmo que gambiarra, mesmo que com chances remotas de resolver ?

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.