Poliano Martini
-
Posts
36 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Poliano Martini
-
-
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.
-
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!
-
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
- 1
-
Você poderia me mostrar a "Select" como exemplo?
Assim fica mais fácil pra mim tentar adaptar para o PostgreSQL.
-
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?
-
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.
-
6 horas atrás, Frango Light disse:
Acho que pro seu caso um subselect...
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".
-
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 - 7Uma 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 - VendasComo 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 | InternoO máximo que consegui foi trazer somente um nível acima com "Join".
-
99% dos casos eu deixo o join apenas para os relacionamentos, e o where para as condições..
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.
-
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
-
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.
- 1
-
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 3Eu 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?
-
Dê uma olhada na alteração que fiz no meu código em negrito.
Muito obrigado meu caro, era exatamente do que estava atrás...
At+
-
Use sempre a extensão .cmd em sistemas modernos como XP, Vista, etc., em vez de .bat.
Espero que ajude,
NW
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!
-
Olá,
preciso obter para uma variável a data e hora no seguinte formato:
2012_02_28__09_15_24
Seria o ano, mês e dia separados por um underline, na sequencia dois underlines, e a hora, minuto e segundo também separados por um underline.
Essa formatação vou usar em um bat para renomear um arquivo de backup.
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
Alguns PC's acessando via HTTP normal e outros com lentidão em rede local
em Redes e Internet
Postado
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?