Duvida com group by

6 respostas
V

Prezados, boa noite.

Estou desenvolvendo uma aplicação desktop usando o banco access 2010.

Tenho uma classe onde preciso agrupar dados, usando o sistema de consulta do access eu consigo sem problemas.
mas quando executo o codigo da erro. alguem pode ajudar?

public ResultSet getConsultarRelatorioReceptivo2(ClassConecta conexao) throws SQLException
    {
        ResultSet resultSet = null;

        try
        {
            String comando;
            comando = "SELECT P.NOME_PESSOA, COUNT(P.NOME_PESSOA) AS TOTAL "+
                      "from CONTROLE_LIGACOES_RECEPTIVO C, PESSOAS P "+
                      "where P.CODIGO_PESSOA = C.CODIGO_PESSOA ";
                             

            comando = comando + "group BY P.NOME_PESSOA";
            //O parâmetro resultSetType define se o ResultSet irá ser navegável e posicionado ou não:
            //ResultSet.TYPE_FORWARD_ONLY: com este parâmetro o ResultSet não poderá ser navegável, ou seja, poderemos somente avançar no objeto ResultSet para poder buscar valores.
            //ResultSet.TYPE_SCROLL_INSENSITIVE: com este parâmetro o ResultSet poderá ser navegável em qualquer direção, para frente e para trás, e será insensível a mudanças feitas por outras transações ou por outros Statements da mesma transação.
            //ResultSet.TYPE_SCROLL_SENSITIVE: com este parâmetro o ResultSet poderá ser navegável para qualquer direção, e será sensível a mudanças feitas por outras transações ou por outros Statements da mesma transação.
            java.sql.PreparedStatement stmtQuery = ClassConecta.con.prepareStatement(comando);


        resultSet = stmtQuery.executeQuery();


        }
        catch (SQLException sqlex)
        {
             JOptionPane.showMessageDialog(null,"Não foi Possivél executar o comando sql" + sqlex);

        }

     return resultSet;
     }

6 Respostas

rafadelnero

Cole a Exception do erro pra sabermos a origem, pode ser algum objeto que esteja nulo seu erro, pode ser várias coisas…

V

Aparece essa mensagem do erro que tratei.

tentei anexar uma imagem mas não achei a opção vou escrever o erro:

Não foi possível executar o comando sqlnet.ucanaccess.jdbc.UcanaccessSQLException: expression not in aggregate or GROUP BY columns: P.NOME_PESSOA

O pior de tudo que funcionou e depois que tentei incluir data parou foi tudo, ja desfiz e refiz todo o form e da o mesmo erro.

rafadelnero

Pegue a query da variável comando e execute no seu banco de dados direto.

V

já fiz isso, no bando traz os dados que eu quero.

rafadelnero

Você citou que incluiu a data, como assim? Colocou mais um campo data na query? Se for isso, provavelmente o erro foi por essa causa, você deve incluir esse campo no group by.

V

Sim, o erro passou a acontecer depois que coloquei essa a data na query. como ainda não sei mexer com dadas no access eu retirei e voltei o codigo de forma quando estava funcionando (assim como postei acima). Depois disso passou a dar essa mensagem. estou usando duas tabelas nessa query. a tabela CONTROLE_LIGACOES_RECEPTIVO e a tabela PESSOAS.

na tabela CONTROLE_LIGACOES_RECEPTIVO sera cadastrado todas as ligaçoes que forem recebidas o programa ja reconhece o codigo da pessoa e salva na tabela, mas quando vou gerar o relatório, se o atendente 1 receber 10 ligações vai ter 10 codigos dele no banco e quero agrupar e so mostrar um, mas eu relaciono com a tabela pessoas para que me mostre o nome da pessoa que realizou o cadastro e não o codigo.

ex

ATENDENTE | TOTAL
LUCIANO CARRAFA BENFICA 10
DEBORA CARRAFA 25

MINHA QUERY

String comando;  
            comando = "SELECT P.NOME_PESSOA, COUNT(P.NOME_PESSOA) AS TOTAL "+  
                      "from CONTROLE_LIGACOES_RECEPTIVO C, PESSOAS P "+  
                      "where P.CODIGO_PESSOA = C.CODIGO_PESSOA ";  
                               
  
            comando = comando + "group BY P.NOME_PESSOA";
Criado 16 de março de 2015
Ultima resposta 17 de mar. de 2015
Respostas 6
Participantes 2