ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Select com Sub-Select

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Qua Fev 27, 2013 11:33 am    Assunto: [RESOLVIDO] Select com Sub-Select Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Fev 27, 2013 11:48 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Fev 27, 2013 11:53 am    Assunto: Responder com Citação

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

Código:
       group by 1, 3


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
Ver o perfil de Usuários Enviar Mensagem Particular
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Qua Fev 27, 2013 12:18 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Fev 27, 2013 2:18 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Qua Fev 27, 2013 2:23 pm    Assunto: Responder com Citação

Boa tarde Imex, cara funcionou perfeitamente...
Qual era o Bizu ? Tinha que agrupar pela empresa ?

Muito obrigado viu.
_________________
Just another Delphi guy.


http://www.soft42.com
http://www.nortaonegocios.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Fev 27, 2013 2:26 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
eliziamaria
Novato
Novato


Registrado: Quinta-Feira, 21 de Março de 2013
Mensagens: 2

MensagemEnviada: Qui Mar 21, 2013 10:08 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB