Ir para conteúdo

Aloysio Coutinho

Members
  • Total de itens

    13
  • Registro em

  • Última visita

Tudo que Aloysio Coutinho postou

  1. Aloysio Coutinho

    Múltiplos registros

    Bom dia pessoAll, Espero que consiga me explicar. Tenho uma base de inventário de servidores com múltiplas tabelas voltadas a hardware, bios, rede, discos, memória, cpu, softwares, dentre outras. Preciso criar uma view com todas as informações por servidor. Estava fazendo múltiplos "selectes" intercalados com JOIN, tipo "select hardware" JOIN "select bios" JOIN "select rede" JOIN "select discos"... e foi aí que me deparei com um problema. Enquanto as tabelas tinham dados únicos e distintos estava indo tudo bem, mas quando um destes JOINs englobou uma tabela com múltiplos registros, como discos por exemplo, os dados das tabelas anteriores se repetiam para cada registro da tabela de múltiplos registros. Imagina quando incluí a tabela de software, onde um servidore terá centenas de softwares instalados. Precisava montar um método que reservasse a informação primária (ID do servidor no caso) e buscasse todos os dados deste servidor nas demais tabelas para, ao final da extração de todas estas informações, partir para o ID seguinte. Será que eu consegui me explicar? Provavelmente tenha que criar uma procedure com um cursor, ou algo do gênero. Alguém poderia me ajudar com isso? De ante mão agradeço a colaboração. Atenciosamente,
  2. Aloysio Coutinho

    Múltiplos registros

    Porém, quando me deparei com um servidor com dois discos, como este de ID = 8, o resultado duplicou o registro para cada disco da máquina, C: e D: ficando assim o registro: Imagina quando eu entrar com a tabela de softwares, conforme expliquei no início.
  3. Aloysio Coutinho

    Múltiplos registros

    Atualmente, estou fazendo o seguinte (acredito que um método um tanto quanto primário): SELECT t.TAG as FUNÇÃO, n.SERVIDOR, n.OSNAME as 'SISTEMA OPERACIONAL', n.OSVERSION as 'OS VERSÃO', b.SMANUFACTURER as FORNECEDOR, b.SMODEL as MODELO, b.TYPE as TIPO, b.BVERSION as 'VERSÃO BIOS', b.SERIALNUMBER, n.IPADDRESS, c.TYPE as PROCESSADOR, c.PROCESSADORES as QUANTIDADE, c.CORES, c.VELOCIDADE, c.FREQUÊNCIA, c.CPUARCH as ARQUITETURA, c.L2CACHESIZE as CACHE, m.RAM as MEMÓRIA, m.SLOTS, m.LIVRES, d.DISCO, d.TOTAL, d.OCUPADO, d.LIVRE, d.DISPONÍVEL from (select UPPER(h.NAME) as SERVIDOR, h.OSNAME, h.OSVERSION, n.IPADDRESS, n.HARDWARE_ID from hardware h inner join networks n on h.id = n.HARDWARE_ID where n.IPADDRESS != '' and n.IPADDRESS not like '%:%' group by n.HARDWARE_ID) n JOIN (select TYPE, CORES, SPEED as FREQUÊNCIA, count(SOCKET) as 'PROCESSADORES', HARDWARE_ID, CPUARCH, L2CACHESIZE, CURRENT_SPEED as VELOCIDADE from cpus group by HARDWARE_ID) c JOIN (select replace(format(SUM(capacity),0),',','.') as RAM, HARDWARE_ID, count(NUMSLOTS) as SLOTS, sum(CASE WHEN CAPACITY < 1 THEN 1 ELSE 0 END) as LIVRES from memories group by HARDWARE_ID) m JOIN (select HARDWARE_ID, CASE WHEN LETTER != '' THEN LETTER WHEN LETTER = '' THEN TYPE END as DISCO, replace(format(total,0),',','.') as TOTAL, replace(format(free,0),',','.') as LIVRE, CONCAT(REPLACE(CAST((100 - (FREE * 100 / TOTAL)) as DECIMAL(10,2)),'.',','), ' %') as OCUPADO, CONCAT(REPLACE(CAST((FREE * 100 / TOTAL) as DECIMAL(10,2)),'.',','), ' %') as DISPONÍVEL from drives where TOTAL > 0 and FILESYSTEM != 'overlay' group by HARDWARE_ID, LETTER, TYPE) d JOIN (select HARDWARE_ID, TAG from accountinfo) t JOIN (select HARDWARE_ID, SMANUFACTURER, SMODEL, TYPE, BVERSION, SSN as SERIALNUMBER from bios) b on n.HARDWARE_ID = c.HARDWARE_ID and n.HARDWARE_ID = m.HARDWARE_ID and n.HARDWARE_ID = d.HARDWARE_ID and n.HARDWARE_ID = t.HARDWARE_ID and n.HARDWARE_ID = b.HARDWARE_ID where n.HARDWARE_ID = 8 order by n.SERVIDOR, d.DISCO
  4. Aloysio Coutinho

    Contagem de registros específicos

    Hey Jack, muito obrigado mesmo pela dica. Estou tentando agradecer através dos ícones, mas estou recebendo o seguinte erro.
  5. Aloysio Coutinho

    Contagem de registros específicos

    Boa tarde pessoAll, Tenho uma tabela com uma coluna que conta o número de slots de memória que um servidor tem (NUMSLOT) e outra (TYPE) que diz quais estão ocupados com o tipo de memória e, quando não tem nenhum pente vem com o conteúdo 'Empty slot'. Queria pegar, em uma única query o número total de slots (esse estou pegando fácil com um "count(NUMSLOT)") e a contagem dos slots vazios. Esse registro estou tendo dificuldades para extrair. Quem conseguiria me ajudar com esta lógica? De ante mão agradeço a colaboração. Atenciosamente,
  6. Aloysio Coutinho

    Contagem de registros específicos

    Bom dia Jack, Cara, tão simples assim. Só queria entender porquê o "count" não funcionou, mas valeu. Deu certo!
  7. Aloysio Coutinho

    Contagem de registros específicos

    Já tentei com CASE e IF, conforme demonstrado abaixo (nesse caso está com o CASE), mas ele está contando todos os registros, ignorando as condições: select replace(format(SUM(capacity),0),',','.') as RAM, HARDWARE_ID, count(NUMSLOTS) as SLOTS, count(CASE WHEN TYPE = 'Empty slot' THEN 1 ELSE 0 END) as LIVRES from memories group by HARDWARE_ID Só lembrando que a minha base na verdade é um MariaDB 10.3.17. Abs,
×

Informação importante

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