Inner join dando pesadelo. 1 mês em cima e sem solução!!!
Olá Pessoal
Estou em cima disso já faz 1 mês. Dia 11/03 recebi ajuda do forum, mas não deu para solucionar tudo. Me sugeriram usar uma ps. Só que não sei como fazer (se é que resolveria). :?
Preciso criar uma sql, q mostre o QTDADE q existe na tabela Produto, sendo que deve ser entre um intervalo de GRUPO (between) e deve ainda diminuir da QTDADE que tiver na tabela ItemPedido, mas somente dos registros do Pedido em que FATURADO is null.
Teria que retornar todos os codigos da clausula WHERE, mostrando o campo C.QTDPRO - (SUM(A.QTDNSI)) em ESANSI. Teria que aparecer 163 registros (cfe a clausula WHERE). Mas só aparece 82 (que é o q tem em ESANSI cfe o INNER JOIN de ESANST).
Segue abaixo o sql que estou querendo usar, mas sem sucesso. Já testei o segundo join de várias formas:
INNER JOIN ESANST- Retorna vários saldos negativos e incorretos;
LEFT JOIN ESANST- Retorna o valor correto, mas mostra somente a QTDPRO dos produtos que aparecem também em ESANSI. Ou seja, só o que está no INNER JOIN de ESANST.
Select C.qtdpro-SUM(A.QTDNSI) SALDO, C.codpro, C.grupro from ESAPRO C
LEFT JOIN esansi A ON (A.CODNSI=C.CODPRO)
INNER JOIN esanst B ON (A.NPCNSI=B.NPCNST AND B.NNFNST IS NULL)
WHERE C.Grupro between 1 and 3 and blqpro=´N´
GROUP BY C.despro, C.codpro, C.grupro, C.qtdpro
Uso firebird 1.5 e no sistema IBQuery e IBDataset.
tabelas:
ESAPRO - Produtos;
ESANST - Pedidos;
ESANSI - Itens dos pedidos;
Os campos são:
C.qtdpro - Qtdade do produto;
C.codpro - Codigo do produto;
C.grupro - Grupo do produto;
A.QTDNSI - Qtdade do item no pedido;
A.CODNSI - Codigo produto no item do pedido;
A.NPCNSI - Codigo do pedido na tabela item do pedido;
B.NPCNST - Codigo do pedido;
B.NNFNST - Numero da NF (depois de faturar)
B.datnst - Data do pedido;
Por favor, me ajudem pois só falta isto para terminar o sistema que estou fazendo.
[ ]´s
Ivonei
Estou em cima disso já faz 1 mês. Dia 11/03 recebi ajuda do forum, mas não deu para solucionar tudo. Me sugeriram usar uma ps. Só que não sei como fazer (se é que resolveria). :?
Preciso criar uma sql, q mostre o QTDADE q existe na tabela Produto, sendo que deve ser entre um intervalo de GRUPO (between) e deve ainda diminuir da QTDADE que tiver na tabela ItemPedido, mas somente dos registros do Pedido em que FATURADO is null.
Teria que retornar todos os codigos da clausula WHERE, mostrando o campo C.QTDPRO - (SUM(A.QTDNSI)) em ESANSI. Teria que aparecer 163 registros (cfe a clausula WHERE). Mas só aparece 82 (que é o q tem em ESANSI cfe o INNER JOIN de ESANST).
Segue abaixo o sql que estou querendo usar, mas sem sucesso. Já testei o segundo join de várias formas:
INNER JOIN ESANST- Retorna vários saldos negativos e incorretos;
LEFT JOIN ESANST- Retorna o valor correto, mas mostra somente a QTDPRO dos produtos que aparecem também em ESANSI. Ou seja, só o que está no INNER JOIN de ESANST.
Select C.qtdpro-SUM(A.QTDNSI) SALDO, C.codpro, C.grupro from ESAPRO C
LEFT JOIN esansi A ON (A.CODNSI=C.CODPRO)
INNER JOIN esanst B ON (A.NPCNSI=B.NPCNST AND B.NNFNST IS NULL)
WHERE C.Grupro between 1 and 3 and blqpro=´N´
GROUP BY C.despro, C.codpro, C.grupro, C.qtdpro
Uso firebird 1.5 e no sistema IBQuery e IBDataset.
tabelas:
ESAPRO - Produtos;
ESANST - Pedidos;
ESANSI - Itens dos pedidos;
Os campos são:
C.qtdpro - Qtdade do produto;
C.codpro - Codigo do produto;
C.grupro - Grupo do produto;
A.QTDNSI - Qtdade do item no pedido;
A.CODNSI - Codigo produto no item do pedido;
A.NPCNSI - Codigo do pedido na tabela item do pedido;
B.NPCNST - Codigo do pedido;
B.NNFNST - Numero da NF (depois de faturar)
B.datnst - Data do pedido;
Por favor, me ajudem pois só falta isto para terminar o sistema que estou fazendo.
[ ]´s
Ivonei
Ivonei
Curtidas 0
Respostas
Ivonei
31/03/2005
Desculpem. Mandei para o forum errado. :oops:
Algum moderador, por favor mova para o forum Interbase/Firebird.
Algum moderador, por favor mova para o forum Interbase/Firebird.
GOSTEI 0
Gandalf.nho
31/03/2005
[b:aea1147e8c][color=red:aea1147e8c]Notificação de Infração às Regras de Conduta :[/color:aea1147e8c][/b:aea1147e8c]
Tópico deveria estar como continuação do tópico abaixo e não como tópico novo
[url]http://forum.clubedelphi.net/viewtopic.php?p=189889[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Tópico deveria estar como continuação do tópico abaixo e não como tópico novo
[url]http://forum.clubedelphi.net/viewtopic.php?p=189889[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
GOSTEI 0
Ivonei
31/03/2005
[b:f9b2e6263a][color=red:f9b2e6263a]Notificação de Infração às Regras de Conduta :[/color:f9b2e6263a][/b:f9b2e6263a]
Tópico deveria estar como continuação do tópico abaixo e não como tópico novo
[url]http://forum.clubedelphi.net/viewtopic.php?p=189889[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Desulpe. Não foi intencional.
Mas continuo na mesma situação (sem solução). :roll:
GOSTEI 0