Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

azizvc

Consulta em Postgre

Recommended Posts

SELECT id, data, (SELECT nome FROM empresa WHERE id = cotacoes.empresa_id) AS empresanome, (SELECT (to_char(sum(preco*quant),'999G990D00')) AS total FROM itens WHERE cot_id = cotacoes.id) AS total FROM cotacoes ORDER BY data DESC

explicação do código:

o SELECT principal busca todas as cotações

na tabela cotacoes tem um campo empresa_id que faz referencia a tabela empresa

o primeiro sub SELECT busca o nome da empresa para o registro atual

o segundo sub SELECT busca na tabela itens os registros referentes a cotação faz a soma do preço de cada item mutiplicando pela quantidade e da o valor total da cotação

 

escrevi este codigo que esta funcionando corretamente mas eu fiquei em duvida se ha alguma outra forma de fazer isso, usando outras funções(se houver), que resulte no mesmo resultado?

 

Falow!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O caminho pode ser mais ou menos por ai, veja se tens o mesmo resultado.

 

SELECT c.id, c.data, e.nome, to_char(sum(i.preco * i.quant),'999G990D00') AS total

FROM cotacoes c, itens i, empresa e

WHERE e.id = c.empresa_id AND i.cot_id = c.id

GROUP BY c.id, c.data, e.nome

ORDER BY c.data DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

O caminho pode ser mais ou menos por ai, veja se tens o mesmo resultado.

SELECT c.id, c.data, e.nome, to_char(sum(i.preco * i.quant),'999G990D00') AS total FROM cotacoes c, itens i, empresa e WHERE e.id = c.empresa_id AND i.cot_id = c.id GROUP BY c.id, c.data, e.nomeORDER BY c.data DESC

eu testei seu codigo tbm deu certo produz o mesmo resultado, legal valeu!sera que tem alguma diferença de velocidade na consulta entre essas duas formas de escrever o codigo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

sera que tem alguma diferença de velocidade na consulta entre essas duas formas de escrever o codigo??

É bem provavel que sim.

Você poderá observar os tempos usando o PgAdminIII.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei as duas no pgadmin e achei estranho!eu abri o pgadmin e rodei primeiro query que eu fizela retornou 10 registros em 336.278msdepois rodei a q você fez retornou 10 registros em 20.626msai rodei novamente a minha e ela retornou 10 registros em 18.404mse rodei novamente a sua e ela retornou em 21.000msrealmente estranho, porem resolvi fazer um teste melhor rodei 5 vezes cada query seguidamente e fiz a media:a minha deu: 16.838msa sua deu: 18.961msa diferença não é muito grande mas pode se tornar maior se o numero de registros for maior....eu acho?!?! não sei?!?e percebi que a primeira consulta que se faz no banco de dados é muito lenta e que ela fica mais rapida apos varias consultas, mas não deveria ser assim, deveria ser rapido logo na primeira consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.