Bom dia a todos.
Tenho o select a abaixo que esta funcionando, porem muito lento.
Gostaria de saber da possibilidade de melhorar-la.
O Banco de dados é o POSTGRESql.
É um SELECT numa tabela de Requisição, mas que traz uma coluna(SELECT azul) como saldo que esta numa tabela de item de uma cotação.
Como eu não consegui verificar o resultado desta campo(SELECT azul), eu repeti no WHERE esta sub (SELECT vermelha).
select r.codigo,r.cod,descr,r.qtde,(select sum(qtde) from a19item group by req_cod having req_cod = r.codigo) as t
from a19req r left join titemg i on r.cod = i.codigo
where r.status='A' and r.qtde-(select sum(qtde) as qtsai from a19item t group by req_cod having req_cod = r.codigo) > 0 ;
Obrigado.
select c/ subquery e verificação de saldo em outra tabela
Moderador: Moderadores
-
paulomhouse
- Usuário Nível 1

- Mensagens: 10
- Registrado em: 04 Jul 2016 10:39
- Localização: são paulo / SP
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
select c/ subquery e verificação de saldo em outra tabela
Olá!
Seja bem-vindo ao Fórum Paulo!
Fiz algumas modificações no teu código, conforme mostrado abaixo. Como não tenho PostgreSQL instalado e nem as tabelas, não foi possível testar. Por favor, teste e informe se funcionou. PS: Você faz JOIN na tabela titemg mas nenhuma coluna dela é usada. Não sei se é necessário para o teu objetivo. Certamente tem um custo de processamento que pode degradar a performance.
Para melhorar a legibilidade dos posts, sempre que postar código fonte faça-o entre as tags code. É só clicar no botão mostrado abaixo, existente na barra de ferramentas da tela "POSTAR UMA RESPOSTA".
Seja bem-vindo ao Fórum Paulo!
Fiz algumas modificações no teu código, conforme mostrado abaixo. Como não tenho PostgreSQL instalado e nem as tabelas, não foi possível testar. Por favor, teste e informe se funcionou.
Código: Selecionar todos
SELECT r.codigo
,r.cod,
,r.descr
,r.qtde
,q.qtsai
FROM a19req r
INNER JOIN (SELECT t.req_cod
,SUM(t.qtde) as qtsai
FROM a19item t
WHERE t.req_cod = r.codigo
GROUP BY t.req_cod ) as q
ON r.codigo = q.req_cod
LEFT JOIN titemg i
ON r.cod = i.codigo
WHERE r.status = 'A'
AND (r.qtde - q.qtsai) > 0Para melhorar a legibilidade dos posts, sempre que postar código fonte faça-o entre as tags code. É só clicar no botão mostrado abaixo, existente na barra de ferramentas da tela "POSTAR UMA RESPOSTA".
- Anexos
-
- Botão Code
- Capturar.PNG (6.39 KiB) Exibido 1768 vezes
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
paulomhouse
- Usuário Nível 1

- Mensagens: 10
- Registrado em: 04 Jul 2016 10:39
- Localização: são paulo / SP
select c/ subquery e verificação de saldo em outra tabela
Ola Alexandre, obrigado pela recepção.
Pode me corrigir se necessário.
O Inner Join não servira porque eu preciso que que mesmo que não houver na tabela item ele me retornara 0, mas que apareça a Requisição que esta a LEFT.
O problema é que no seu exemplo,era algo que eu ja tinha tentado mas alguns campos não são reconhecidos: ,q.qtsai que vem do SUBSELECT SUM(qtde) as qtsai e da mesma forma na Clausula WHERE (r.qtde - q.qtsai).
Mas resolveu o problema com a geração de um index na tabela a19item.
Sugestão de um Site internacional, que assim como vocês, estão muito dispostos a colaborar, http://www.hmgforum.com.
Quanto aos códigos, da próxima vez formatarei conforme você orientou.
Muitíssimo obrigado.
Pode me corrigir se necessário.
O Inner Join não servira porque eu preciso que que mesmo que não houver na tabela item ele me retornara 0, mas que apareça a Requisição que esta a LEFT.
O problema é que no seu exemplo,era algo que eu ja tinha tentado mas alguns campos não são reconhecidos: ,q.qtsai que vem do SUBSELECT SUM(qtde) as qtsai e da mesma forma na Clausula WHERE (r.qtde - q.qtsai).
Mas resolveu o problema com a geração de um index na tabela a19item.
Sugestão de um Site internacional, que assim como vocês, estão muito dispostos a colaborar, http://www.hmgforum.com.
Quanto aos códigos, da próxima vez formatarei conforme você orientou.
Muitíssimo obrigado.
-
paulomhouse
- Usuário Nível 1

- Mensagens: 10
- Registrado em: 04 Jul 2016 10:39
- Localização: são paulo / SP
select c/ subquery e verificação de saldo em outra tabela
Bom dia.
Mais uma vez obrigado, não somente a quem postou, mas também a quem verificou a msg. pensando em responder.
Mais uma vez obrigado, não somente a quem postou, mas também a quem verificou a msg. pensando em responder.