| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Qua Fev 27, 2013 11:33 am Assunto: [RESOLVIDO] Select com Sub-Select |
|
|
Buenas amigos, estou com uma pequena dificuldade
quero obter os dados de quantidade de 2 tabelas algo como esse select
| Código: |
select lanctos_estoque.nf, sum(quantidade),
(select sum(nfs_itens.quantidade) as qtde
from nfs_itens
inner join nf_saida
on nf_saida.nfs = nfs_itens.nfs
and nf_saida.empresa = nfs_itens.empresa
where nfs_itens.empresa = lanctos_estoque.empresa
and nf_saida.nota_fiscal = lanctos_estoque.nf
) as qtde
from lanctos_estoque
where lanctos_estoque.empresa = 2
and lanctos_estoque.operacao = 'S'
and lanctos_estoque.tipo = 'NFS'
group by lanctos_estoque.nf
order by lanctos_estoque.empresa, lanctos_estoque.nf, lanctos_estoque.quantidade |
na teoria ai está relacionando as quantidades das duas tabelas e o número da nota, porém, está me retornando um erro
| Código: |
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
|
caso eu coloque os selects separadamente funciona normal, mas preciso comparar então o interessante seria lado a lado...
Alguém sabe me dizer oque é esse erro ai ? _________________ Just another Delphi guy.
http://www.soft42.com
http://www.nortaonegocios.com.br
Editado pela última vez por viox em Qua Fev 27, 2013 2:24 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Fev 27, 2013 11:48 am Assunto: |
|
|
posta a estrutura das tabelas pra facilitar
e explica melhor o q vc prentende fazer.
o campo quantidade pertence a qual tabela?
vc quer comparar a quant de entrada com a quantidade de saida? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Fev 27, 2013 11:53 am Assunto: |
|
|
Bom dia,
Qual banco de dados (e versão) você está utilizando?
Acho que deveria funcionar da forma como você postou, mas experimente também:
| Código: | | group by lanctos_estoque.nf, qtde |
ou
Espero que ajude.
Editado pela última vez por imex em Qua Mar 08, 2023 11:42 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Qua Fev 27, 2013 12:18 pm Assunto: |
|
|
Infelizmente o group by de uma forma ou de outra passada está dando o mesmo erro Imex, utilizo Firebird versão 2.5.
Como a estrutura Joemil ? o nome das colunas das duas tabelas ?
A quantidade que não tem referência a tabela é da tabela lanctos_estoque apenas esqueci de colocar mas funciona assim também...
A problemática é a seguinte, o cliente um lazarento lá mexeu na base de dados e alterou a quantidade nessa tabela lanctos_estoque, que é uma tabela que tem toda movimentação tanto de entrada quanto de saida,
então preciso selecionar os dados da tabela vendas e relacionar com as quantidades saidas nessa tabela de lanctos_estoque assim como na tabela de entrada de estoque também terei que verificar.
A grande dificuldade é esse erro que está retornando, caso eu tire o group by trás os registros porém só faz a soma no subselect..
A verdade é que se eu fizesse os selects separados funcionaria mas a praticidade de ter os campos para comparar lado a lado é bem melhor não ? se não conseguir vou ter que partir para essa solução agressiva rs.
Obrigado pela atenção. _________________ Just another Delphi guy.
http://www.soft42.com
http://www.nortaonegocios.com.br |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Fev 27, 2013 2:18 pm Assunto: |
|
|
Experimente dessa forma:
| Código: | select lanctos_estoque.nf, sum(quantidade) as Quantidade,
(select sum(nfs_itens.quantidade) as qtde
from nfs_itens
inner join nf_saida
on nf_saida.nfs = nfs_itens.nfs
and nf_saida.empresa = nfs_itens.empresa
where nfs_itens.empresa = lanctos_estoque.empresa
and nf_saida.nota_fiscal = lanctos_estoque.nf
) as qtde
from lanctos_estoque
where lanctos_estoque.empresa = 2
and lanctos_estoque.operacao = 'S'
and lanctos_estoque.tipo = 'NFS'
group by lanctos_estoque.empresa, lanctos_estoque.nf
order by lanctos_estoque.empresa, lanctos_estoque.nf, quantidade |
Espero que ajude. |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Fev 27, 2013 2:26 pm Assunto: |
|
|
| viox escreveu: | | Qual era o Bizu ? Tinha que agrupar pela empresa ? |
Isso, porque esse campo está sendo utilizado na clausula Where da sub-query.
Abraço |
|
| Voltar ao Topo |
|
 |
eliziamaria Novato

Registrado: Quinta-Feira, 21 de Março de 2013 Mensagens: 2
|
Enviada: Qui Mar 21, 2013 10:08 am Assunto: |
|
|
Sempre bom lembrar que os campos da cláusula where e select devem ser usados no Group By quando usamos agregações. _________________ Elizia Maria
Seguro Desemprego |
|
| Voltar ao Topo |
|
 |
|