Ir ao conteúdo
  • Cadastre-se

Poliano Martini

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

  1. Olá pessoal! Tenho uma aplicação que roda no Tomcat instalado num PC com Windows 7 e vários outros PC's acessam via HTTP. Nessa rede contém 2 PC's que em momentos aleatórios no decorrer do dia fica lento carregar uma página e nas outras máquinas não ocorre esse problema em nenhum momento. Fiz diversos testes e nada de encontrar o motivo, acabei instalando a aplicação em outro PC que contém Windows 10 e aqueles 2 PC's que estavam com problemas não tiveram mais, com isso descartei a possibilidade de estar com algum problema nos 2 PC's. Alguém já teve um cenário parecido ou tem uma dica do que pode estar ocorrendo?
  2. Utilizando dessa forma sei que é possível. Gostaria de saber se tem como usando um CASE compacto, aonde especifico a coluna a verificar já na cláusula CASE, como no exemplo.
  3. Olá pessoal! Tenho um campo aonde verifico em um CASE, dessa maneira: CASE campo WHEN 'a' THEN 'resultado 1' WHEN 'b' THEN 'resultado 2' WHEN 'c' THEN 'resultado 3' ELSE 'sem resultado' END Preciso fazer com que caso o campo tenha valor 'a' ou 'aa', me retorna 'resultado 1'. Tem como fazer na mesma instrução que esteja "WHEN 'a' THEN 'resultado 1'" ou realmente tenho que criar uma nova instrução para 'aa'? Pensei em algo do tipo: WHEN 'a' OR 'aa' THEN 'resultado 1' ...mas sem sucesso!
  4. Devido ao registro poder ter vários níveis, não consegui utilizando a função "string_agg", pois sempre retornava somente o grupo do item... mas consegui através de uma consulta recursiva: http://debugandoduvida.blogspot.com.br/2016/04/query-recursiva-no-postgresql-estrutura.html
  5. @Frango Light Você poderia me mostrar a "Select" como exemplo? Assim fica mais fácil pra mim tentar adaptar para o PostgreSQL.
  6. @Frango Light A função "string_agg", é uma função de agregação que concatena valores de um campo com um delimitador. Como eu pegaria todas as descrições dos grupos em cascata?
  7. @Frango Light Qual banco possui essa função? Pois estou utilizando PostgreSQL e acho que não possui, mas gostaria de dar uma olhada para tentar procurar algo semelhante.
  8. Nesse exemplo só retorna o subgrupo em 1 nível. Por exemplo, o item "Externo" mostra apenas o grupo que ele pertence que no caso é "Vendas", mas "Vendas" está dentro de "Comercial", então gostaria que retorna-se um dentro do outro "Comercial | Vendas | Externo".
  9. Olá pessoal! Tenho uma tabela de centro de custo onde ela possui ligação com ela mesma, ocorrendo o caso de vários níveis... Ex: ccu_codigo - ccu_descricao - ccu_codigo_grupo 1 - Administração - null 2 - Comercial - null 3 - Financeiro - 1 4 - Recursos Humanos - 1 5 - Marketing - 2 6 - Vendas - 2 7 - Interno - 6 8 - Externo - 7 Uma consulta simples pra trazer os registros: Select fin_centro_custo.ccu_codigo, fin_centro_custo.ccu_descricao From fin_centro_custo Order By fin_centro_custo.ccu_descricao; O retorno é: 1 - Administração 2 - Comercial 8 - Externo 3 - Financeiro 7 - Interno 5 - Marketing 4 - Recursos Humanos 6 - Vendas Como eu faria pra retornar assim: 1 - Administração 3 - Administração | Financeiro 4 - Administração | Recursos Humanos 2 - Comercial 5 - Comercial | Marketing 6 - Comercial | Vendas 8 - Comercial | Vendas | Externo 7 - Comercial | Vendas | Interno O máximo que consegui foi trazer somente um nível acima com "Join".
  10. Exatamente desse modo que venho praticando. É que em um teste eu vi que em ambas as maneiras o resultado era o mesmo, então a dúvida foi se teria alguma diferença em questão de desempenho.
  11. Pessoal, me tirem uma dúvida... Suponha-se a existência dessas duas tabelas: CREATE TABLE cliente (id SERIAL PRIMARY KEY,nome CHARACTER VARYING(100));CREATE TABLE conta_receber (id SERIAL PRIMARY KEY,id_cli INTEGER REFERENCES cliente (id),qtd_parcela INTEGER,valor NUMERIC(11,2));INSERT INTO cliente (id, nome) VALUES (0, 'CONSUMIDOR');INSERT INTO cliente (id, nome) VALUES (1, 'FULANO');INSERT INTO cliente (id, nome) VALUES (2, 'BELTRANO');INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (1, 0, 2, 100.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (2, 1, 1, 75.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (3, 1, 1, 64.25);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (4, 0, 3, 90.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (5, 1, 2, 77.80); Agora vou fazer uma SELECT na tabela "conta_receber", mas não pode trazer os registros para o cliente = 0, então ficaria assim: SELECT *FROM conta_receberINNER JOIN cliente ON cliente.id = conta_receber.id_cliWHERE conta_receber.id_cli != 0 Se eu colocar o filtro no INNER JOIN, existe alguma diferença em questão de desempenho? Sei que os dois modos vão trazer o mesmo resultado, mas quero saber qual a melhor prática. SELECT *FROM conta_receberINNER JOIN cliente ON cliente.id = conta_receber.id_cli AND conta_receber.id_cli != 0
  12. Não precisa usar abreviação, porque é o mesmo nome da tabela. Então: SELECT veiculo.codigoFROM veiculo ... é válido! Agora se fosse: SELECT vei.codigoFROM veiculo vei ... nesse caso teria que colocar o alias.
  13. Olá pessoal, tenho uma tabela chamada veículo, onde terá registros de veículos dos tipos caminhão-cavalo ou carreta. Então o campo "tipo" será 1 para cavalo e 2 para carreta. Quando o registro for uma carreta, poderá haver um cavalo vinculado. Há também o campo "desengatado", que será usado caso a carreta possua um vínculo com um cavalo mas não está engatado (objeto físico) no momento. Abaixo a tabela com alguns registros: CREATE TABLE veiculo ( codigo integer, tipo character(1), descricao character varying(50), codigo_vinculo integer, desengatado boolean, constraint pk_veiculo PRIMARY KEY (codigo), constraint fk_veiculo_vinculo FOREIGN KEY (codigo_vinculo) REFERENCES veiculo (codigo) ); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (1, '1', 'CAVALO 1', NULL, NULL); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (2, '1', 'CAVALO 2', NULL, NULL); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (3, '1', 'CAVALO 3', NULL, NULL); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (4, '2', 'CARRETA 1', NULL, false); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (5, '2', 'CARRETA 2', 1, true); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (6, '2', 'CARRETA 3', 2, false); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (7, '2', 'CARRETA 4', 1, false); Agora veja bem, preciso fazer uma consulta que traga todos os veículos do tipo cavalo (2) que não estão vinculados com nenhum veículo do tipo carreta (1), ou que possa ter o vínculo mas está desengatado. O cavalo pode estar vinculado a uma ou várias carretas, mas não pode estar engatado em mais de uma. O retorno deve ser o seguinte: 3 - CAVALO 3 Eu criei a consulta abaixo, mas não está certo pois trás o registro quando existe vínculo mais de uma vez: SELECT veiculo.codigo, veiculo.descricao FROM veiculo WHERE (veiculo.tipo = '1') AND ((veiculo.codigo NOT IN (SELECT b.codigo_vinculo FROM veiculo as b WHERE (b.codigo_vinculo IS NOT NULL))) OR (veiculo.codigo IN (SELECT b.codigo_vinculo FROM veiculo as b WHERE ((b.codigo_vinculo IS NOT NULL) AND (b.desengatado))))) Agora deu "tilt" na cabeça e não estou conseguindo raciocinar. Alguém poderia me ajudar?
  14. Muito obrigado meu caro, era exatamente do que estava atrás... At+
  15. Era isso mesmo! Uma questão apenas, quando é uma hora de 1 dígito, teria como o retorno vir acompanhado de um 0? Tipo, quando é 8 retornar 08. Obrigado!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...