Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

7vidas

Soma de máximos

Recommended Posts

Boa tarde pessoal.

 

Eu tenho um sistema de questinário, no qual existe uma tabela de pergunta, resposta, risco e risco_resposta.

 

No final do questionário o usuário recebe seu resultado apartir da pontuação de cada risco. Em uma listagem de riscos, eu preciso mostrar para o administrador do sistema a pontuação máxima possível em cada risco, lembrando-se que, uma pergunta pode ter apenas uma resposta.

 

Como faço para pegar a resposta que contêm a maior pontuação em um risco de cada pergunta e somar esses valores. Segue abaixo a estrutura de tabelas que estarão envolvidas na busca:

 

TABLE `qv_opcao` (  `cod_opcao` int(11) NOT NULL auto_increment,  `cod_pergunta` int(11) NOT NULL default '0',  `descricao` varchar(250) NOT NULL default '',  `ordem` int(11) NOT NULL default '0',  PRIMARY KEY  (`cod_opcao`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;TABLE `qv_pergunta` (  `cod_pergunta` int(11) NOT NULL auto_increment,  `pergunta` varchar(250) NOT NULL default '',  `ordem` smallint(6) NOT NULL default '0',  PRIMARY KEY  (`cod_pergunta`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;TABLE `qv_risco` (  `cod_risco` int(11) NOT NULL auto_increment,  `nome` varchar(50) NOT NULL,  `ordem` tinyint(3) NOT NULL default '0',  PRIMARY KEY  (`cod_risco`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;TABLE `qv_risco_opcao` (  `cod_risco_opcao` bigint(11) NOT NULL auto_increment,  `cod_risco` int(11) NOT NULL default '0',  `cod_opcao` int(11) NOT NULL default '0',  `peso` int(11) NOT NULL default '0',  PRIMARY KEY  (`cod_risco_opcao`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;

O resultado que quero:

 

RISCO || MÁXIMO POSSIVEL

Matematica || 40

Português || 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira coisa, se organize e tenha em mãos os critérios de como achar tais valores com uma regra conceitual (Regra de Negócios).

Segundo, no MySQL estão disposíveis várias funções agregadas como SUM() e MAX(), que no seu caso serão bastante úteis.

 

Leia isto: http://dev.mysql.com/doc/refman/5.0/en/gro...-functions.html

 

...este link tem as funções de agregação com alguns exemplos práticos e de aplicação. Você somente terá que saber inglês para se virar com essa página.

 

No mais, qualquer dúvida, continue postando e mesmo que alguém te dê algo pronto, busque entender...pode ser que você enferente este problema novemente em um futuro bem próximo.

 

Abraço!! Feliz Natal... http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Wagner.

 

Eu conheço bem as funçoes SUM() e MAX(). O problema é que eu não consigo fazer a soma somente das respostas com maiores valores e mostrar para o usuário. Exemplificando melhor:

 

Pergunta 1 tem como respostas:

 

Resposta 1 vale:

10 - Risco 1 "Maior pontuaçao no risco 1"

2 - Risco 2

 

Resposta 2 vale:

5 - Risco 1

3 - Risco 2 "Maior pontuaçao no risco 2"

 

Pergunta 2 tem como respostas:

 

Resposta 1 vale:

5 - Risco 1

3 - Risco 2

 

Resposta 2 vale:

7 - Risco 1 "Maior pontuaçao no risco 1"

10 - Risco 2 "Maior pontuaçao no risco 2"

 

O que eu quero é que o sistema mostre a pontuação máxima possivel com as respostas acima. Na lógica o sistema teria que trazer:

 

Risco 1: 17 pontos possíveis

Risco 2: 13 pontos possíveis

 

Entende agora?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.