Re: [pgbr-geral] Dúvida em bloco anonimo
Olá, agora deu certo, o bloco está correto, o problema era na tabela com chave primária incorreta, estava inserindo e duplicando É que tinha milhoes de registros e não percebi. Obrigado Em 14 de junho de 2016 08:28, Jean Alysson <jeanp...@gmail.com> escreveu: > Ola, não persistiu nada na tabela, na tela exibiu a mensagem : > Query OK, 0 rows affected (execution time: 734 ms; total time: 734 ms) > > Os selects separados retornam os dados de acordo com os IDs informados. > > Obrigado > > Em 14 de junho de 2016 06:16, JotaComm <jota.c...@gmail.com> escreveu: > >> Opa! >> >> Em 13 de junho de 2016 21:20, Jean Alysson <jeanp...@gmail.com> escreveu: >> >>> Ola, preciso popular a tabela EmpresaServicoUsuario com os dados dos IDs >>> de tres tabelas: usuarios,, servicos e empresa, >>> escrevi o bloco abaixo (tendo certeza dos IDs dos existentes, 320,287 >>> ...) >>> mas nao gerou nada, tem algo errado ? >>> >>> >>> DO $$ >>> DECLARE ru record; >>> DECLARE rsss record; >>> DECLARE rse record; >>> BEGIN >>> FOR usu IN SELECT idusuario FROM usuarios WHERE idusuario IN (320,287) >>> LOOP >>> >>> FOR ser IN SELECT idservico FROM servicos WHERE idservico IN (11,17) >>> LOOP >>> >>> FOR emp IN SELECT idempresa FROM empresas WHERE idempresa = 50 >>> LOOP >>>EXECUTE 'INSERT INTO EmpresaServicoUsuario (idusuario, idservico, >>> idempresa) values >>> ('||usu.idusuario||','||ser.idservico||','||emp.idempresa||')'; >>> END LOOP; >>> >>> END LOOP; >>> >>> END LOOP; >>> END$$; >>> >>> deveria gerar os registros: >>> 320,11,50 >>> 320,17,50 >>> 287,11,50 >>> 287,17,50 >>> >> >> Não gerou significa que não mostrou nada na tela ou não persistiu na >> tabela? >> >> >>> >>> -- >>> Atenciosamente >>> Jean Alysson Ambrosio >>> >>> _______ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >> >> >> Abraços >> >> -- >> JotaComm >> http://jotacomm.wordpress.com >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > > -- > Atenciosamente > Jean Alysson Ambrosio > -- Atenciosamente Jean Alysson Ambrosio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Dúvida em bloco anonimo
Ola, não persistiu nada na tabela, na tela exibiu a mensagem : Query OK, 0 rows affected (execution time: 734 ms; total time: 734 ms) Os selects separados retornam os dados de acordo com os IDs informados. Obrigado Em 14 de junho de 2016 06:16, JotaComm <jota.c...@gmail.com> escreveu: > Opa! > > Em 13 de junho de 2016 21:20, Jean Alysson <jeanp...@gmail.com> escreveu: > >> Ola, preciso popular a tabela EmpresaServicoUsuario com os dados dos IDs >> de tres tabelas: usuarios,, servicos e empresa, >> escrevi o bloco abaixo (tendo certeza dos IDs dos existentes, 320,287 ...) >> mas nao gerou nada, tem algo errado ? >> >> >> DO $$ >> DECLARE ru record; >> DECLARE rsss record; >> DECLARE rse record; >> BEGIN >> FOR usu IN SELECT idusuario FROM usuarios WHERE idusuario IN (320,287) >> LOOP >> >> FOR ser IN SELECT idservico FROM servicos WHERE idservico IN (11,17) >> LOOP >> >> FOR emp IN SELECT idempresa FROM empresas WHERE idempresa = 50 >> LOOP >>EXECUTE 'INSERT INTO EmpresaServicoUsuario (idusuario, idservico, >> idempresa) values >> ('||usu.idusuario||','||ser.idservico||','||emp.idempresa||')'; >> END LOOP; >> >> END LOOP; >> >> END LOOP; >> END$$; >> >> deveria gerar os registros: >> 320,11,50 >> 320,17,50 >> 287,11,50 >> 287,17,50 >> > > Não gerou significa que não mostrou nada na tela ou não persistiu na > tabela? > > >> >> -- >> Atenciosamente >> Jean Alysson Ambrosio >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > Abraços > > -- > JotaComm > http://jotacomm.wordpress.com > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Atenciosamente Jean Alysson Ambrosio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Dúvida em bloco anonimo
Ola, preciso popular a tabela EmpresaServicoUsuario com os dados dos IDs de tres tabelas: usuarios,, servicos e empresa, escrevi o bloco abaixo (tendo certeza dos IDs dos existentes, 320,287 ...) mas nao gerou nada, tem algo errado ? DO $$ DECLARE ru record; DECLARE rsss record; DECLARE rse record; BEGIN FOR usu IN SELECT idusuario FROM usuarios WHERE idusuario IN (320,287) LOOP FOR ser IN SELECT idservico FROM servicos WHERE idservico IN (11,17) LOOP FOR emp IN SELECT idempresa FROM empresas WHERE idempresa = 50 LOOP EXECUTE 'INSERT INTO EmpresaServicoUsuario (idusuario, idservico, idempresa) values ('||usu.idusuario||','||ser.idservico||','||emp.idempresa||')'; END LOOP; END LOOP; END LOOP; END$$; deveria gerar os registros: 320,11,50 320,17,50 287,11,50 287,17,50 -- Atenciosamente Jean Alysson Ambrosio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Dúvida em select
Boa noite, preciso de ajuda no seguinte cenario: tenho uma tabela com idpedido - idproduto - situacao - quantidade 1 1 F 2 1 1 C 2 2 1 F 3 3 1 F 5 3 1 C 5 3 1 E 5 onde F=fechado C=cancelado E=excluido preciso do total das quantidades vendidas, descontando o que foi cancelado ou excluido, mas sendo cancelado e excluido, desconta 2 vezes e fica errado, uso o seguinte select: select sum( case when situacao = 'F' then quantidade else quantidade * -1 end) as total from tabela funciona quando o pedido é fechado e cancelado ou fechado e excluido, mas no caso do pedido 3 ele é fechado, cancelado e excluido, ficando com valor negativo, como posso resolver ? Obrigado Jean Alysson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Dúvida em select
Em 05/05/2016 11:09, "Tiago José Adami" <adam...@gmail.com> escreveu: > > Em 4 de maio de 2016 23:10, Jean Alysson <jeanp...@gmail.com> escreveu: > > Ola Tiago, está correta sua dedução > > obrigado pela resposta ! > > > > Estou começando com PostgreSql, então gostaria de saber se dessa forma eu > > teria boa performance ? > > Esta solução com subselect poderia ser feita sem usar 2 selects ? over > > partition, with query ou algo assim ? > > > > Olá Jean. > > Evite o top posting, prefira sempre escrever abaixo das mensagens > anteriores. Isto facilita a leitura. > > Não é exclusividade do PostgreSQL, o desempenho vai depender de vários > fatores como: número de registros, índices criados e número de campos > (atributos) envolvidos na cláusula WHERE. > > É possível reescrever esta consulta de várias maneiras. É possível > também utilizando window functions, mas acredito que o esforço será > maior, o código SQL será maior e o desempenho será pior, haja vista > que mais registros serão lidos do banco de dados e trazidos para a > memória para realização de operações de ordenação, causando uso > adicional de CPU. > > O que vai impactar mais no desempenho da consulta como descrevi são os > índices sobre a tabela. Por exemplo: você pode criar índices compostos > colocando os campos utilizados na consulta com maior incidência de > valores distintos à frente dos campos que possuem menor distinção de > valores ao longo da tabela. > > Certa vez alguém postou aqui na lista um endereço de blog ou site com > dicas valiosas de como criar índices, se você pesquisar bem no > histórico [1] vai encontrar. > > [1] https://www.postgresql.org.br/historico > > > TIAGO J. ADAMI > http://www.adamiworks.com > @tiadami > Ola Tiago, obrigado pela explicação. Att.: Jean Alysson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Dúvida em select
Ola Tiago, está correta sua dedução obrigado pela resposta ! Estou começando com PostgreSql, então gostaria de saber se dessa forma eu teria boa performance ? Esta solução com subselect poderia ser feita sem usar 2 selects ? over partition, with query ou algo assim ? Obrigado pela colaboração Jean Alysson Em 4 de maio de 2016 22:25, Tiago José Adami <adam...@gmail.com> escreveu: > Em 4 de maio de 2016 22:19, Jean Alysson <jeanp...@gmail.com> escreveu: > > > > Ola, preciso fazer o select abaixo, tem que retornar somente um registro, > > mas como o campoString é diferente, retornam varios registros, como > posso resolver ? > > > > SELECT max(campoInteger), campoString > > FROM tabela > > where outroCampoInteger = 31 > > group by campoInteger, campoString > > > > já tentei colocar max(campoString), mas não deu certo , retorna um > registro, mas misturou o campoInteger de um registro com o campoString de > outro registro > > Deduzi que você quer os dois campos para o valor máximo de > campoInteger, certo? Veja se isso te ajuda: > > SELECT > t1.campoInteger, t1.campoString > FROM > tabela t1 > WHERE > t1.outroCampoInteger = 31 AND > t1.campoInteger = ( > SELECT > MAX(t2.campoInteger) > FROM > tabela t2 > WHERE > t2.outroCampoInteger = t1.outroCampoInteger > ) > > TIAGO J. ADAMI > http://www.adamiworks.com > @tiadami > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Atenciosamente Jean Alysson Ambrosio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Dúvida em select
Ola, preciso fazer o select abaixo, tem que retornar somente um registro, mas como o campoString é diferente, retornam varios registros, como posso resolver ? SELECT max(campoInteger), campoString FROM tabela where outroCampoInteger = 31 group by campoInteger, campoString já tentei colocar max(campoString), mas não deu certo , retorna um registro, mas misturou o campoInteger de um registro com o campoString de outro registro Obrigado Jean Alysson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral