Array
(
)

Como inserir em uma tabela resultado de uma consulta?

Antoniomoraes
   - 16 abr 2008

Estou com uma duvida basica, no meu banco de dados existe uma tabela chamada TURMASS e nela os seguintes campos (matricula, nome, sobrenome, turma), em uma outra tabela chamada DESC com os seguintes campos (matricula, sequencial, codigo e valor).

Preciso inserir na tabela DESC os seguintes dados: matricula, sequencial, codigo e valor, isso quando a turma destes alunos for igual a “ADMIN” (campo turma na tabela TURMASS)

Os dados são os seguintes:
matricula = campo matricula na tabela TURMASS
seqüencial = ultimo sequencial gravado na tabela DESC + 1
código = um valor fixo (Exemplo: 01)
valor = um valor fixo (Exemplo: 100.0)

Estou iniciando no SQL agora e pesquisei em diversos lugares e não encontrei nenhuma dica que me ajudasse nesse caso. Estou usando MS-SQL 2000, se alguém puder me dar uma luz...

Valew galera

Emerson
   - 17 abr 2008

veja se isso funciona:
#Código

insert into DESC
select
  matricula,
  (select max(desc)+1 from desc),
  ´01´,
  100
from
  turmass
where
  turma = ´ADMIN´

outra coisa: renomeie esta tabela DESC. desc é uma palavra reservada do sqlserver.

Antoniomoraes
   - 17 abr 2008

Beleza emerson.en, consegui com o comando abaixo:

insert into DESCALU
select
matricula, ´10´,
(select max(dca_cod)+1 from descalu),
´01´,
100
from
turmass
where
turma = ´ADMIN´

O único problema é que o numero sequencial -> (select max(dca_cod)+1 from descalu) gera o mesmo numero para todos os alunos, ou seja, se tiver 30 alunos na turma, ele deveria gerar os numeros 11, 12, 13 ... 41 e assim por diante, mas ele insere 11 para todos. Tentei fazer declarando uma variavel como abaixo, mas o resultado é o mesmo.

DECLARE @sequencial INT
SELECT @sequencial = (select max(dca_cod)+1 from descalu)
insert into DESCALU
select
matricula, ´10´,
(sequencial),
´01´,
100
from
turmass
where
turma = ´ADMIN´

Valew