geraldojp 0 Denunciar post Postado Maio 2, 2014 Sou novo com banco de dados MySQL. Mesmo lendo em vários sites, não consigo criar um while para inserir vários registros em uma tabela. Peço ajuda!! Segue o código: delimiter // begin set @counter = (select min(id) from tabela_pergunta where category = 18); set @fim = (select max(id) from tabela_pergunta where category = 18); while @counter <= @fim do insert into tabela_resposta(question,answer,fraction,feedback) select distinct @counter,answer,1,'' from tabela_resposta where question = 5; set @counter = @counter+1; end while; end // Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Maio 2, 2014 Qual a finalidade de utilizar um while para inserir registros? Não entendi. Compartilhar este post Link para o post Compartilhar em outros sites
geraldojp 0 Denunciar post Postado Maio 2, 2014 Tenho um grupo de perguntas cujas as respostas são sempre as mesmas. Ex: Pergunta1? () a () b () c Pergunta2? () a () b () c Daí gostaria de replicar as respostas para meu grupo de pergunta. Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Maio 2, 2014 Vamos ver, dentro do while tem um INSERT INTO ... SELECT ..., se você fizer somente o SELECT, algum resultado é exibido? Minha dúvida é porque você está fazendo um INSERT na mesma tabela do SELECT, pode ser que o problema esteja aí... Compartilhar este post Link para o post Compartilhar em outros sites
geraldojp 0 Denunciar post Postado Maio 2, 2014 Tem que ter os dois...deixa eu tentar explicar melhor.. A tabela de resposta é da seguinte forma: id int idpergunta int resposta varchar Para cada pergunta, vou ter um conjunto de respostas quem sempre serão as mesmas. Pegando o exemplo anterior, se eu faço um select das respostas para a pergunta 1, vou ter como resultado: () a, () b, () c. E é esse resultado que quero replicar para o conjunto de perguntas. E é por isso que tenho que ter um select dentro do insert, para pegar o conjunto de respostas. Sendo que o contador que eu uso, vai é o id das perguntas. Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Maio 2, 2014 Vamos ver, dentro do while tem um INSERT INTO ... SELECT ..., se você fizer somente o SELECT, algum resultado é exibido? Ainda não entendi, substitui o @counter do SELECT e executa, me diz qual foi o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
geraldojp 0 Denunciar post Postado Maio 2, 2014 Fazendo apenas o select da tabela de resposta usando um idpergunta já existente. O resultado foi: () a, () b, () c. select * from tabela_resposta where idpergunta = 5; Agora quero replicar essas mesmas respostas, na tabela de resposta, porem com o idpergunta diferente. Lembrando que minha tabela resposta é composta por id, idpergunta, resposta. Supondo que eu tenha 10 perguntas, terei que inserir na tabela_resposta essas 10 perguntas e cada pergunta vai ter 3 repostas. Usando algoritmo, ficaria da seguinte forma: i = 1; faça enquanto i <= 10: insere tabela_resposta id_pergunta(neste caso é o próprio contador i ) e as respostas (onde tenho que fazer o select usado acima, já que são três respostas). Uma outra forma é usar três insert para cada resposta com o mesmo id_pergunta, que também me traria o mesmo resultado. De qualquer forma, como você usaria a estrutura while para o problema acima relatado. Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Maio 2, 2014 Cara, pelo visto você quer fazer uma TRIGGER ou PROCEDURE, ainda não conheço nenhuma... Mas eu faria um relacionamento, verificaria qual pergunta está sem resposta por meio de um LEFT JOIN, e realizaria um INSERT onde o LEFT JOIN retornasse NULL... Por exemplo: SELECT t1.id, t2.id FROM primeira_tabela t1 LEFT JOIN segunda_tabela t2 ON t1.id = t2.id WHERE t2.id IS NULL Esta consulta retorna somente os ids da primeira_tabela onde não existe o id na segunda tabela, mas vou estudar mais o assunto... Compartilhar este post Link para o post Compartilhar em outros sites