1
resposta

Erro na execução da query.

Fui efetuar a query com os comandos agrupados da seguinte forma: select e.pergunta, count(r.id) from exercicio e join resposta r on e.id = exercicio_id group by r.id order by count (r.id) desc;

E recebi a seguinte resposta: ERROR 1630 (42000): FUNCTION sql2.count does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

Está faltando alguma coisa na query? Pois a mesma query desagrupada como na resposta do exercício funciona normalmente.

1 resposta

Sua query tem alguns erros de sintaxe.

1 - Ao usar o join, logo após o 'on' você deve relacionar a chave de uma tabela com sua estrangeira na outra tabela;

2 - No group by, você deve colocar tudo que não seja funcao de agregacao, no caso 'e.pergunta'.

3 - No order by, até onde eu sei, você pode colocar o nome do campo ou colocar a posicao do campo pelo qual você quer ordenar. Nao sei se pode-se utilizar colocar funcao de agregacao no 'order by'. Mas como você quer ordenar pelo count, basta colocar 'order by 2', pois o count esta na segunda coluna retornado pelo select. A query deveria ficar parecida com essa aqui abaixo :

select e.pergunta, count(r.id) from exercicio e join resposta r on e.id = r.exercicio_id group by e.pergunta order by 2 desc;