Sou novo no fórum, e, como muita gente, estou iniciando com uma dúvida =P
O engraçado sobre meu problema é que, ou ele é muito idiota, ou eu brisei legal na hora de desenvolver meu banco de dados, pois não consigo achar uma resposta para ele em lugar nenhum.
Eu imagino que alguns de vocês irão achar que estou postando minha dúvida na parte errada do fórum, pois trata-se de um programa em ASP.NET, porém o problema está mesmo nos códigos SQL...
Em 1º lugar: Tenho 3 tabelas: LOGIN, ALUNO e TUR_ALU, sendo que LOGIN guarda as informações do login de todos usuários (que no caso incluem professores e administradores, mas resolvendo o caso dos alunos o resto fica muito fácil), contendo as colunas: COD_LOGIN, Integer Identity; USUARIO, varchar(10); SENHA, varchar(8) e TIPO, varchar(1). A tabela aluno tem as colunas: COD_ALU, integer identity; COD_LOGIN, integer (FK via programa); NOME_ALU, varchar(45) e EMAIL_ALU, varchar(55). E a tabela TUR_ALU, que é de ligaçao entre ALUNO e uma outra tabela de TURMA, que contem as colunas: COD_ALU, integer (FK via programa); COD_TUR, integer (FK via programa) e NUM_ALU, integer identity.
2º: Eu fiz apenas uma página para todas estas informações, e tentei fazer os INSERT de diversas maneiras, pois o funcionamento é o seguinte: primeiro o programa insere o login e a senha do aluno na tabela LOGIN, criando o COD_LOGIN. então o programa insere o nome, o email e o codigo de login (COD_LOGIN) do aluno na tabela LOGIN, e depois insere na tabela TUR_ALU o COD_ALU e o COD_TUR(já existente em outra tabela).
Meu problema é o seguinte: eu tentei de inúmeros meios adicionar o COD_LOGIN recém criado na tabela ALUNO junto dos outros valores, e o meio que imaginei ser o mais correto é:
"INSERT INTO ALUNO(COD_LOGIN, NOME_ALU, EMAIL_ALU) VALUES((SELECT MAX(COD_LOGIN) FROM LOGIN), '" & txtNome.Text & "', '" & txtEmail.Text & "')"
porém o debug reclama que não pode haver uma subquery neste caso... então resolvi o problema removendo a propriedade NOT NULL do NOME_ALU e do EMAIL_ALU, e dividindo o INSERT em um INSERT e um UPDATE:
"INSERT INTO ALUNO(COD_LOGIN) SELECT MAX(COD_LOGIN) FROM LOGIN"
"UPDATE ALUNO SET NOME_ALU = '" & txtNome.Text & "', EMAIL_ALU = '" & txtEmail.Text & "' WHERE (COD_ALU = (SELECT MAX(COD_ALU) AS Expr1 FROM ALUNO AS ALUNO_1))"
Problema resolvido, certo? Bem, em parte...
Eis que chega a parte de inserir COD_ALU e COD_TUR em TUR_ALU...
Tentei utilizar o mesmo método que utilizei na tabela ALUNO, porém isso é impossível, pois se trata de uma chave concatenada, ou seja, não dá para tornar nenhum dos valores NOT NULL
Contada minha historinha, lhes pergunto: Como faço para incluir em um INSERT um SELECT & outros valores?
Pergunta
ONon
Olá pessoal!
Sou novo no fórum, e, como muita gente, estou iniciando com uma dúvida =P
O engraçado sobre meu problema é que, ou ele é muito idiota, ou eu brisei legal na hora de desenvolver meu banco de dados, pois não consigo achar uma resposta para ele em lugar nenhum.
Eu imagino que alguns de vocês irão achar que estou postando minha dúvida na parte errada do fórum, pois trata-se de um programa em ASP.NET, porém o problema está mesmo nos códigos SQL...
Em 1º lugar: Tenho 3 tabelas: LOGIN, ALUNO e TUR_ALU, sendo que LOGIN guarda as informações do login de todos usuários (que no caso incluem professores e administradores, mas resolvendo o caso dos alunos o resto fica muito fácil), contendo as colunas: COD_LOGIN, Integer Identity; USUARIO, varchar(10); SENHA, varchar(8) e TIPO, varchar(1). A tabela aluno tem as colunas: COD_ALU, integer identity; COD_LOGIN, integer (FK via programa); NOME_ALU, varchar(45) e EMAIL_ALU, varchar(55). E a tabela TUR_ALU, que é de ligaçao entre ALUNO e uma outra tabela de TURMA, que contem as colunas: COD_ALU, integer (FK via programa); COD_TUR, integer (FK via programa) e NUM_ALU, integer identity.
2º: Eu fiz apenas uma página para todas estas informações, e tentei fazer os INSERT de diversas maneiras, pois o funcionamento é o seguinte: primeiro o programa insere o login e a senha do aluno na tabela LOGIN, criando o COD_LOGIN. então o programa insere o nome, o email e o codigo de login (COD_LOGIN) do aluno na tabela LOGIN, e depois insere na tabela TUR_ALU o COD_ALU e o COD_TUR(já existente em outra tabela).
Meu problema é o seguinte: eu tentei de inúmeros meios adicionar o COD_LOGIN recém criado na tabela ALUNO junto dos outros valores, e o meio que imaginei ser o mais correto é:
porém o debug reclama que não pode haver uma subquery neste caso... então resolvi o problema removendo a propriedade NOT NULL do NOME_ALU e do EMAIL_ALU, e dividindo o INSERT em um INSERT e um UPDATE:Problema resolvido, certo? Bem, em parte...
Eis que chega a parte de inserir COD_ALU e COD_TUR em TUR_ALU...
Tentei utilizar o mesmo método que utilizei na tabela ALUNO, porém isso é impossível, pois se trata de uma chave concatenada, ou seja, não dá para tornar nenhum dos valores NOT NULL
Contada minha historinha, lhes pergunto: Como faço para incluir em um INSERT um SELECT & outros valores?
Obrigado antecipadamente,
ONon
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.