Query SQL para retorno de resultSet

3 respostas Resolvido
mysql
Sergio_Junior

Ola
Estou precisando retornar alguns dados do banco MYSQL, porem não estou obtendo resultado satisfatorio.
Segue o que consegui
select Per.pergunta 'Pergunta', COUNT(*) 'Qnt Alternativas' from perguntas as Per, questionario as Ques WHERE Per.id_pergunta = 4 and Ques.id_pergunta = 4;

Onde esse numero 4 é o id da pergunta, na qual há varias. o resultado é esse:

| Pergunta   | Qnt Alternativas|
| Pergunta 1 | 5               |

Só que eu preciso que ele retorne todas as perguntas e na frente a quantidade de respostas que tem.

Algo que a saida seja isso

| Pergunta   | Qnt Alternativas|
| Pergunta 1 | 5               |
| Pergunta 2 | 8               |
| Pergunta 3 | 2               |
| Pergunta 4 | 4               |
| Pergunta 5 | 5               |

obs.:Na tabela Pergunta, há o id_pergunta e a pergunta… Na tabela Questionario, há o id_pergunta e o id_opcao;
alguem pode me ajudar?

EDIT1> Bom, pesquisando aqui, consegui usar o INNER JOIN para chegar um pouco mais perto do que eu quero, a QUERY ficou assim
select perguntas.pergunta, questionario.id_opcao from perguntas INNER JOIN questionario ON perguntas.id_pergunta = questionario.id_pergunta

e a saida ficou assim

| Pergunta   | id_opcao        |
| Pergunta 1 | 1               |
| Pergunta 1 | 2               |
| Pergunta 1 | 3               |
| Pergunta 1 | 4               |
| Pergunta 1 | 5               |
| Pergunta 2 | 1               |
| Pergunta 2 | 3               |
| Pergunta 2 | 4               |
| Pergunta 2 | 5               |
| Pergunta 3 | 1               |
| Pergunta 3 | 2               |
| Pergunta 3 | 3               |
| Pergunta 4 | 5               |
| Pergunta 4 | 6               |
| Pergunta 4 | 7               |

Então, no caso, preciso contar a quantidade de opção que cada pergunta tem e colocar na tabela. Acho que ficou mais fácil agora.

3 Respostas

RaulCrash

Acho que ficaria algo assim:

select Per.pergunta 'Pergunta', COUNT(Ques.*) 'Qnt Alternativas' from perguntas as Per, questionario as Ques WHERE Per.id_pergunta = 4 and Ques.id_pergunta = 4
group by Ques.id_pergunta
Sergio_Junior

Não Raul, infelizmente não é isso. Creio que onde tem os ids da pergunta, estão errados, pois ali faz retornar apenas a pergunta com id = 4, mas eu quero que retorne todas as perguntas. e consequentemente na frente a quantidade de alternativas que tem cada questão.

Sergio_Junior
Solucao aceita

Consegui resolver, primeiro pesquisei sobre o INNER JOIN e depois pesquisei afundo sobre o COUNT o que me trouxe tbm o GROUP BY que me fez achar o que precisava.
Segue a solução… qualquer duvida, só chamar.

select perguntas.pergunta, COUNT(*) as 'Alternativas' from perguntas INNER JOIN questionario ON perguntas.id_pergunta = questionario.id_pergunta GROUP BY questionario.id_pergunta

Criado 16 de janeiro de 2017
Ultima resposta 17 de jan. de 2017
Respostas 3
Participantes 2