Jerfs 1 Denunciar post Postado Abril 27, 2009 Tenho um problema clássico em programação, alguém se habilita? tenho uma tabela de questões para geração de provas com 5 registros, com um campo que conta numero de utilização... reg1 0 reg2 0 reg3 0 reg4 0 reg5 0 Cada vez que a questão é utilizada em uma prova gerada por uma rotina interna, ele simplesmente incrementa um no campo de incrementação dele, suponhamos que as questões 1,2 e 3 foram utilizadas, então fica assim: reg1 1 reg2 1 reg3 1 reg4 0 reg5 0 a idéia principal é garantir a utilização total do banco de dados, não deixando questões esquecidas se utilização... essa forma que usei funciona em termos, cada vez que a pesquisa é feita, executo uma query, organizando o banco pelo campos utilização de forma crescente, ficaria assim: reg4 0 reg5 0 reg1 1 reg2 1 reg3 1 Logo, a próxima questão a ser inserida em uma prova ainda não foi utilizada... ou seja, garanto assim a rodagem total do banco de dados correto?! Agora vamos a um complicador... quando uma nova questão é inserida no banco após um longo tempo de uso do software, vejamos como ficaria: reg6 0 reg4 20 reg5 32 reg1 44 reg2 150 reg3 162 após todas a rotinas passadas, o reg6 já ficaria estagnado até ele chegar a ser maior que o outro lá de baixo, ou seja... NUNCA! isso quer dizer que em todas as provas que forem geradas terei o reg6 nela! Alguém se arrisca a pegar esse caso complicado para me ajudar?! Aguardo retorno... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 29, 2009 Qual o banco de dados que você utiliza, dependendo do banco, pode fazer um RAND no próprio SQL no qual vai sortear questões. Caso seu banco não possua esta funcionalidade, poderia criar uma lista com todas as questões, e então você desenvolver um algoritmo que faz o sorteio dos itens. Compartilhar este post Link para o post Compartilhar em outros sites
Jerfs 1 Denunciar post Postado Abril 29, 2009 Primeiramente, obrigado Marcio! então segue o que eu fiz para solucionar o meu problema... Deixei o contador de ordem para se incrementar sempre... e quando entrar uma questão nova, ela receberá 0 certo? então quando ela for utilizada, ele testa se o número é 0, se sim, então coleto o numero do próximo registro (ex: 30) e incrementar 1 (30 + 1) então atribuo ao registro que anteriormente era 0. Isso garante que eu utilize o banco de dados inteiro... e não repita questões nunca... Tks a todos Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 29, 2009 ok, beleza... Compartilhar este post Link para o post Compartilhar em outros sites