Ir para conteúdo
Fórum Script Brasil

aldomm

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Tudo que aldomm postou

  1. Caro Fulvio, Muito Obrigado pela atenção!!!! Por algum motivo Visual Studio não aceita essa query, mas ao finaliza-la assim mesmo, faz o que deve corretamente. Acho que é um problema do Visual Studio. PROBLEMA RESOLVIDO: SELECT PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM (SELECT TOP (@mf) PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM Perguntas WHERE (Dificuldade =1) AND (Materia=@mat) ORDER BY NEWID() UNION SELECT TOP (@f) PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM Perguntas AS Perguntas_5 WHERE (Dificuldade = 2) AND (Materia=@mat) ORDER BY NEWID() UNION SELECT TOP (@r) PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM Perguntas AS Perguntas_4 WHERE (Dificuldade = 3) AND (Materia=@mat) ORDER BY NEWID() UNION SELECT TOP (@d) PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM Perguntas AS Perguntas_3 WHERE (Dificuldade = 4) AND (Materia=@mat) ORDER BY NEWID() UNION SELECT TOP (@md) PerguntaID, Materia, Usuario, Pergunta, Alfa, Bravo, Charlie, Delta, Eco, AltenativaCorreta, ObjetivoReferencia, Dificuldade, QuestValidada, CodigoReferencia FROM Perguntas AS Perguntas_2 WHERE (Dificuldade = 5) AND (Materia=@mat) ORDER BY NEWID()) AS Aleatorio
  2. Desculpe por não ter sido claro, mas é apenas uma tabela no banco com aquelas colunas. O código da Matéria vem de um combobox. Tentei adaptar o seu código mas não é bem isso que preciso. Eu estou nisso a uma semana, e é a última coisa que preciso para fechar o projeto... fogo né! Bem, ao assunto: Quando você faz uma query normal aleatória é assim: SELECT TOP(@Numero_de_Perguntas_por_Dificuldade) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=@dificuldade) AS tb ORDER BY NEWID() Essa query não faz UNION com outra de parâmetro diferente de dificuldade. isto é, a forma abaixo não funciona: SELECT TOP(@Numero_de_Perguntas_Muito_Fáceis) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=1) AS tb1 ORDER BY NEWID() UNION SELECT TOP(@Numero_de_Perguntas_Fáceis) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=2) AS tb2 ORDER BY NEWID() UNION SELECT TOP(@Numero_de_Perguntas_Regures) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=3) AS tb3 ORDER BY NEWID() UNION SELECT TOP(@Numero_de_Perguntas_Difíceis) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=4) AS tb4 ORDER BY NEWID() UNION SELECT TOP(@Numero_de_Perguntas_Muito_Difíceis) * FROM (SELECT * FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=5) AS tb5 ORDER BY NEWID() Em outras palavras, a lógica para fazer a query seria: 1- Criar uma tabela temporária resultado de uma query de todas perguntas do banco de uma matéria (i.e. SELECT * FROM Perguntas WHERE materia=@materia) 2- Desta tabela acima, fazer uma query selecionando todas perguntas de uma dificuldade (i.e. SELECT * FROM tabela_temporária WHERE dificuldade=@dificuldade) AS Segunda_tabela ) 3- Sortear o número desejado de questões da tabela resultado da query do ítem 2 (i.e. SELECT TOP(@númeroDePerguntas) FROM Segunda_tabela ORDER BY NEWID() ) 4- Unir cinco destas queries para cinco diferentes dificuldades de uma só matéria. (Nota: o banco possui várias matérias, cada matéria possui questões de 5 níveis de dificuldade) O que não está funcionando é o comando UNION entre elas...
  3. Oi Fulvio, obrigado pelo interesse... Quanto ao * foi só um erro na digitação aqui... O que ocorre é que esse query abaixo funciona bem, veja: SELECT * FROM (SELECT TOP (@NumeroDePerguntasPorDificuldade) * FROM Perguntas WHERE Dificuldade=1) ORDER BY NEWID() ) UNION SELECT * FROM (SELECT TOP (@NumeroDePerguntasPorDificuldade) * FROM Perguntas WHERE Dificuldade=2) ORDER BY NEWID() ) .... para todas as dificuldades. Nesse caso acima, eu teria que ter um banco de perguntas por matéria, o q não é o que eu queria! Como é que eu posso obter um resultado (que seria uma prova de perguntas aleatórias) em que eu possa escolher (fazer o filtro) a matéria (que é uma propriedade da pergunta) e ainda escolher quantas perguntas de cada nível de dificuldade. ex. meu banco é assim: PerguntaID, Matéria, NívelDificuldade, Pergunta, RespostaA, RespostaB, RespostaC, RespostaD, RespostaCerta. Se conseguir ver como posso fazer os dois filtros (materia e dificuldade) juntos em uma query que seleciona dessas sub-tabelas perguntas aleatóriamente seria o que eu preciso! rs Agradeço desde já pelo apoio! Aldo
  4. Caro amigos, preciso de ajuda sobre uma query que busca questões de uma prova aleatóriamente de um banco de dados de questões. As questões têm suas propriedades que devem ter seus filtros ex. matéria e dificuldade. Não consigo fazer funcionar a query abaixo (pois dá erro de unable to parse query text). Ao executar dá erro de definição de parâmetros como @materia e @Dificuldade. Se a query for sem o filtro de matérias, ele funciona. Veja abaixo o que tenho: SELECT * FROM (SELECT TOP (@NumeroDePerguntasPorDificuldade) FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=1) ORDER BY NEWID() ) UNION SELECT * FROM (SELECT TOP (@NumeroDePerguntasPorDificuldade) FROM (SELECT * FROM Perguntas WHERE Materia=@materia) WHERE Dificuldade=2) ORDER BY NEWID() ) ..... um pra cada das 5 dificuldades. Assim no gerador de provas eu escolho uma matéria e quantas perguntas eu quero de cada nível de dificuldade. Alguém pode ajudar??? Obrigado
×
×
  • Criar Novo...