Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com INSERT e SELECT


ONon

Pergunta

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 é:

"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?

Obrigado antecipadamente,

ONon

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa Noite amigo

Para fazer um select com outros valores a sintaxe seria essa

INSERT INTO ALUNO(COD_LOGIN, NOME_ALU, EMAIL_ALU)

SELECT MAX(COD_LOGIN), 'Nome', 'Email'

FROM LOGIN

porém no seu caso o campo COD_LOGIN já é do tipo identify significa que ele será incrementado automaticamente pelo sql então tente apenas assim

INSERT INTO ALUNO(NOME_ALU, EMAIL_ALU)

Values( 'Nome', 'Email')

Espero ter ajudado

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, valeu, ajudou pra caramba! Meu projeto estava praticamente parado por causa deste problema...

No caso, o COD_LOGIN é identify sim, mas em outra tabela, e estou fazendo as conexões entre as tabelas apenas pelo código, por isso utilizei o primeiro INSERT que você mandou e funcionou direitinho!

Muito obrigado!

ONon

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...