MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    usando having

    adriano_byte
    adriano_byte
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 115
    Registrado : 12/12/2013

    usando having Empty usando having

    Mensagem  adriano_byte 6/5/2014, 21:03

    Pessoal o access não entendi o que é having.


    Se eu digitar qulaquer coisa com a instrução having na query ele diz que alguns campos não pertecem a query mesmo sendo colunas da tabela. dá erro 3122.

    se a query for executada direto no bd com apenas o campo que da função de agregação ele passa, mas se for querer visualizar os outros campos da tabela não passa.


    exemplo:


    select count(nome) group by nome having nome>1;

    isso executa no bd.

    Mas se colocar:

    select codigo,count(nome) group by nome having nome>1;

    ele da erro 3122. não entendi.

    o que eu posso fazer?







    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    usando having Empty Re: usando having

    Mensagem  Alexandre Neves 6/5/2014, 21:33

    Boa noite,
    A cláusula HAVING filtra os registos após a execução. Assim, nesta cláusula só devem aparecer campos que existam na consulta
    Estranho os códigos que publicou, pois não encontro referência às tabelas
    Veja e compare
    select codigo,count(nome) as Conta FROM TABELA group by nome having Contar>1;


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    adriano_byte
    adriano_byte
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 115
    Registrado : 12/12/2013

    usando having Empty opa

    Mensagem  adriano_byte 6/5/2014, 21:41

    É que eu esqueci de colocar from tabela.


    mas pq having não entendi os outros campos da tabela além da função de agregação?


    adriano_byte
    adriano_byte
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 115
    Registrado : 12/12/2013

    usando having Empty having

    Mensagem  adriano_byte 7/5/2014, 22:07

    se eu fizer:

    select count(codigo) as codigo,*from tabela group by nome having count(codigo)>1;

    ele só entenderá o que está no count(), o restante ele da erro 3122.

    E se caso eu quiser fazer tal fassanha n ão vai dá certo.

    Exemplo:

    select count(codigo) as codigo, avg(nota) as nota, sum(creditos) as creditos from tabela group by nome having count(codigo)>1 and avg(nota) >7 and sum(creditos) >100;

    Uma query desta não passa no bd do access nem a pal juvenal, mas é necessário faze-la

    Alguém tem uma ideia? please....


    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    usando having Empty Re: usando having

    Mensagem  Alexandre Neves 8/5/2014, 19:29

    Boa tarde,
    Não pode ter um nome de campo igual executa alguma função: count(codigo) as codigo
    Diga o que tem e o que pretende


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    adriano_byte
    adriano_byte
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 115
    Registrado : 12/12/2013

    usando having Empty having

    Mensagem  adriano_byte 9/5/2014, 17:04

    Veja que nesta query que passei não tem campo repetido.

    select count(codigo) as codigo, avg(nota) as nota, sum(creditos) as creditos from tabela group by nome having count(codigo)>1 and avg(nota) >7 and sum(creditos) >100;

    Isso pode está acontecendo por o access não ser um sgbd e tipado.

    Eu ja experimentaei esta query nos sgbd's e funciona perfeitamente.

    Eu pretendo usar o havingo fizualizando todos os campos da tabela, mas conforme eu ja havia dito, o access só aceita esta query con o único campo codigo ou qualquer um outro único campo, ele não permite mais de um campo usando having.

    O problema é que eu preciso.


    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    usando having Empty Re: usando having

    Mensagem  Alexandre Neves 9/5/2014, 19:43

    Boa tarde,
    Não me canso de avisar: O título do tema é para ajudar os utilizadores a procurar o que precisam. Não utilizem o título para transmitir mensagem
    adriano_byte escreveu:Veja que nesta query que passei não tem campo repetido.
    select count(codigo) as codigo, avg(nota) as nota, sum(creditos) as creditos from tabela group by nome having count(codigo)>1 and avg(nota) >7 and sum(creditos) >100;
    Note que
    select count(codigo) as codigo, avg(nota) as nota, sum(creditos) as creditos from tabela group by nome having count(codigo)>1 and avg(nota) >7 and sum(creditos) >100;

    Veja aqui que pode indicar até 10 campos na cláusula having
    Pretende ajuda nalguma situação ou quer apenas entender a construção do código?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    adriano_byte
    adriano_byte
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 115
    Registrado : 12/12/2013

    usando having Empty having

    Mensagem  adriano_byte 9/5/2014, 20:50

    EU to tentando fazer essa query funcionar.

    Tem como vc tentar criar uma situação ai usando having com mais de um campo? Ai vc vai ver a dificuldade que to passando, a query só executa em sgbd, mas não executa em access, eu preciso dela em access.





    Conteúdo patrocinado


    usando having Empty Re: usando having

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 17:20