Ir ao conteúdo
  • Cadastre-se

Poliano Martini

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

posts postados por Poliano Martini

  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. Em 12/04/2017 às 12:11, wmsilva191 disse:
    
    SELECT
    CASE
      WHEN nome IN ('a','aa') THEN 'resultado 1'
      WHEN nome='b' THEN 'resultado 2'
      WHEN nome='c' THEN 'resultado 3'
      ELSE 'sem resultado'
    END

     

     

    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. 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".

  5. 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
  6. Estou falando que até onde sei de Banco de Dados, para usar igual ele usou "veiculo.codigo" teria de adicionar uma abreviação à tabela no select por exemplo:

    "SELECT ve.codigo,ve.nome FROM veiculos ve WHERE...." Também achei desnecessário nesse caso, afinal ele está usando apenas uma tabela. Mas foi o que notei rapidamente aqui. Me desculpe se estiver errado

    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.

    • Curtir 1
  7. 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?

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!