Ir para conteúdo
Fórum Script Brasil
  • 0

quantidade de campos com tipo varchar


fajo

Pergunta

Olá,

estou com uma tabela de pesquisa, onde tenho 3 perguntas, sendo as repostas "sim" ou "não" para cada uma delas e eu estou precisando da quantidade por registro de quantas respostas foram "sim"e quantas foram "não".

Ex.:

codigo pergunta1 resposta1 pergunta2 resposta2 pergunta3 resposta3

1 sim não sim

o resultado seria dois outros campos com as quantidade de sim - 2 - e outro com a quantidade de não - 1, isso para cada registro. Dá pra fazer no proprio sql?

Alguma sugestão?

Obrigado

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Dá pra fazer no proprio sql?
fajo, não há uma instrução ou função para isto nos bancos de dados (pelo menos, que eu nunca vi isso por ai).

Conforme o banco de dados que você está usando (e você não informou <_<), há possibilidade de implementar uma procedure nele, do contrário, tem que implementar no código mesmo.

Na implementação no código, não tem complicação, basta que você percorra a lista de campos que tem as respostas e vá totalizando os sim e não.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá...

Como o colega disse, dependendo do tipo de banco, dá para fazer muita coisa...

Veja, no MySQL:

create table `questao`
(
idquestao integer unsigned not null auto_increment,
pergunta1 varchar(30) not null default 'pergunta1',
pergunta2 varchar(30) not null default 'pergunta2', 
pergunta3 varchar(30) not null default 'pergunta3', 
resposta1 varchar(3) not null default 'não', 
resposta2 varchar(3) not null default 'não', 
resposta3 varchar(3) not null default 'não', 
primary key (`idquestao`)
)
engine = InnoDB;

insert into `questao`
(idquestao,
 pergunta1,
 pergunta2,
 pergunta3,
 resposta1,
 resposta2,
 resposta3
)
values
(
 0,
 "A Terra é Azul",
 "O Círculo Tem 2 Lados",
 "Brasil tem Z",
 "sim",
 "sim",
 "não"
)
,
(
 0,
 "O Sal é Doce",
 "A Lua é de Queijo",
 "Cobra voa",
 "não",
 "não",
 "não"
),
(
 0,
 "Agua Viva Queima", 
 "Galinha Voa",
 "Cigarro Mata",
 "sim",
 "sim",
 "sim"
);


select sum(if(resposta1="sim", 1, 0)) as sim1,
       sum(if(resposta2="sim", 1, 0)) as sim2,
       sum(if(resposta3="sim", 1, 0)) as sim3,
       sum(if(resposta1="não", 1, 0)) as nao1,
       sum(if(resposta2="não", 1, 0)) as nao2,
       sum(if(resposta3="não", 1, 0)) as nao3
from `questao`


Resultado:

sim1  sim2  sim3  nao1  nao2  nao3
 2     2     1     1     1     2

Ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Só uma dica para melhorar a normalização do banco, separe em duas tabelas um para as perguntas e outra para as resposta e faça um relacionamento entre elas, isso vai evitar de você repetir dados, e vai melhorar o seus resultados.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...