Ir para conteúdo
Fórum Script Brasil

Kakao

Membros
  • Total de itens

    463
  • Registro em

  • Última visita

Tudo que Kakao postou

  1. SELECT desp_data, EXTRACT(Month from desp_data) mes, Extract (Year from desp_data) ano from funcionariosdespesas WHERE date_trunc('month', desp_data) = '2013-01-01'
  2. A dica é fazer um outer join e na cláusula where testar o nulo. Sim sei montar um select mas você tem que mostrar serviço primeiro.
  3. Isto é trabalho escolar? O que você já tentou?
  4. Kakao

    Dúvidas Query WITH

    Tenta assim: ) gs(mes) on gs.mes = e.mes
  5. Kakao

    Dúvidas Query WITH

    Para mostrar os meses sem movimento fica assim: with v_entradas as ( select date_trunc('month', ent_data) mes, sum(ent_valor) soma from entradas where extract(year from ent_data) = extract(year from now()) group by 1 ), v_saidas as ( select date_trunc('month', sai_data) mes, sum(sai_valor) soma from saidas where extract(year from sai_data) = extract(year from now()) group by 1 ) select to_char(gs.mes, 'YYYY-MM') mes, round(coalesce(e.soma, 0), 4) entrada, round(coalesce(s.soma, 0), 4) saida, round(coalesce(e.soma, 0) - coalesce(s.soma, 0), 4) saldo from v_entradas e inner join v_saidas s on e.mes = s.mes right outer join generate_series ( date_trunc('year', now()), date_trunc('year', now()) + interval '1 year - 1 month', '1 month' ) gs(mes)
  6. Kakao

    Dúvidas Query WITH

    Qual é a versão do postgresql?
  7. Kakao

    Dúvidas Query WITH

    Pelo que entendi o que você quer é isto: with v_entradas as ( select date_trunc('month', ent_data) mes, sum(coalesce(ent_valor, 0)) soma from entradas where extract(year from ent_data) = extract(year from now()) group by 1 ), v_saidas as ( select date_trunc('month', sai_data) mes, sum(coalesce(sai_valor, 0)) soma from saidas where extract(year from sai_data) = extract(year from now()) group by 1 ) select to_char(e.mes, 'YYYY-MM') mes, round(e.soma, 4) soma, round(s.soma, 4) soma, round(e.soma - s.soma, 4) saldo from v_entradas e inner join v_saidas s on e.mes = s.mes
  8. Para otimização é necessário mostrar a consulta que se quer melhorar e a estrutura das respectivas tabelas. E a versão do postgresql.
  9. Desligue o firewall só para testar. Retire a linha 192.168.254.0/32 trust e deixe só 192.168.254.0/24 trust.
  10. Mostre o código onde você recebe os campos antes de passar para o postgresql (php, python, etc)
  11. Kakao

    Chave composta grande

    Você pode concatenar os números numa string binária: create table jogo ( codigo integer, num binary(2), primary key (codigo, num) ); insert into jogo (codigo, num) values (1, concat(unhex(hex(240)), unhex(hex(40)))) ; select codigo, conv(hex(left(num, 1)), 16, 10) n1, conv(hex(mid(num, 2, 1)), 16, 10) n2 from jogo; +--------+------+------+ | codigo | n1 | n2 | +--------+------+------+ | 1 | 240 | 40 | +--------+------+------+
  12. O que aconteceu com o seu teste é que você digitou a string e ela foi com a codificação do seu terminal e aí ficou diferente do que está na base. Veja que quando você for comparar uma string vinda de um feed com a que está na base as duas vão ter a mesma codificação. A não ser que o desenvolvedor do feed fique alterando. Então me parece que trocar os caracteres especiais é uma complicação desnecessária. Se for realmente necessário trocar os caracteres então eu acho que vale a pena pensar um pouco mais se a abordagem do hash é a mais indicada.
  13. Crie um arquivo com os comandos que você quer que sejam executados, por exemplo meu_script.sql: select minha_funcao(meu_parametro); select outra_funcao(); Se for Linux coloque o comando psql no seu crontab: * * * * * psql --file /caminho/para/meu_script.sql -U usuario_da_base minha_base & Se for Windows use o agendador de tarefas para rodar o script.
  14. Pra mim funcionou. Eu testei assim: create table fee_itens ( ite_unico varchar(255), ite_codigo integer, ite_md5 binary(8) ); insert into fee_itens (ite_unico, ite_codigo, ite_md5) values( 'Veneno de aranha é usado em pesquisa contra disfunção erétil', 7395927, unhex(left(md5('Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) ); select ite_codigo, ite_unico, ite_md5, unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) FROM fee_itens where ite_md5 = unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) ; +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ | ite_codigo | ite_unico | ite_md5 | unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ | 7395927 | Veneno de aranha é usado em pesquisa contra disfunção erétil | *A(%1 | *A(%1 | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ Teste a consulta a seguir e poste o resultado: select ite_codigo, ite_unico, ite_md5, unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) FROM fee_itens where ite_codigo = 7395927 ; +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ | ite_codigo | ite_unico | ite_md5 | UNHEX( LEFT( MD5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil' ) , 16 ) ) | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ | 7395927 | Veneno de aranha é usado em pesquisa contra disfunção erétil | *A(%1 | *A(%1 | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ Mostre o create da tabela fee_itens e também o insert da linha acima.
  15. Você setou o campo ite_md5 com o hash do campo ite_unico: update fee_itens set ite_md5 = unhex( md5(ite_unico) ); Depois comparou com o hash de outro campo, o ite_codigo: SELECT ite_unico, ite_md5, UNHEX( MD5( ite_codigo ) ) AS conf_md5 FROM fee_itens Experimente comparar com o hash de ite_unico: SELECT ite_unico, ite_md5, UNHEX( MD5( ite_unico ) ) AS conf_md5 FROM fee_itens
  16. Com tamanho 16 o índice vai ter o dobro do tamanho e portanto vai levar mais tempo para ser percorrido. A diferença real só poderá ser testada com uma tabela grande. Talvez seja pouco ou talvez seja mais. Só testando.
  17. Exato. Uma busca em um campo binário indexado vai ser muito mais rápida do que um full text search. Se a consequência da colisão não é importante então você pode diminuir o tamanho do binary para 8 por exemplo para ficar mais eficiente: create table t ( feed_unico_campo text, feed_unico_valor text, md5_hash binary(8) ); insert into t (feed_unico_campo, feed_unico_valor, md5_hash) values ('ckslsdkdi', 'kdksoskd', unhex(left(md5(concat('ckslsdkdi', 'kdksoskd')), 16))) ; select * from t where md5_hash = unhex(left(md5(concat('ckslsdkdi', 'kdksoskd')), 16)) ;
  18. Qual é o tamanho da string de texto? Uma opção é salvar o hash das strings concatenadas em uma coluna BINARY: create table t ( feed_unico_campo text, feed_unico_valor text, md5_hash binary(16) ); insert into t (feed_unico_campo, feed_unico_valor, md5_hash) values ('ckslsdkdi', 'kdksoskd', unhex(md5(concat('ckslsdkdi', 'kdksoskd')))) ; select * from t where md5_hash = unhex(md5(concat('ckslsdkdi', 'kdksoskd'))) ; A chance de colisão de um hash md5 (128 bits) é insignificante: http://en.wikipedia.org/wiki/Birthday_para...obability_table
  19. select c.*, d.*, o.ip, o.domain, o.computer from ( select ip from cacic union select ip from dhcp union select ip from officescan ) u left join cacic c on u.ip = c.ip left join dhcp d on u.ip = d.ip left join officescan o on u.ip = o.ip where c.ip is null
  20. select t.id, t.cpf from ( select cpf from ( select id, cpf from t group by id, cpf ) s group by cpf having count(*) > 1 ) s inner join t on t.cpf = s.cpf order by t.cpf, t.id
  21. select cpf from t group by cpf having count(*) > 1 order by cpf
  22. Se não está criptografada não é senha normal. É senha ruim. Tentar ajudar é dar corda para você se enforcar.
  23. A senha está criptografada?
×
×
  • Criar Novo...