Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pytter

insert com inner join?

Recommended Posts

E aí galera boa noite,

 

Como sou novo no ramo de SQL e especificamente no SGBD SQL Server, estou tentando saber como faço um insert em duas tabelas, acredito que com o inner join poderei, me corrijam se eu estiver errado. O cenário é este abaixo:

 

Tenho as tabelas:

 

 

funcionarios(
cod_funcionarios int not null primary key identity(1,1),
cod_departamento int foreign key references departamento,
cod_cargo int foreign key references cargo,
nome char(20) not null,
nome_meio char(40),
sobrenome char(20) not null,
idade int not null,
CPF char(11) not null,
CNPJ char(14))
endereco(
cod_endereco int not null primary key identity(1,1),
cod_cliente int foreign key references cliente,
cod_funcionarios int foreign key references funcionarios,
rua char(50) not null,
numero int not null,
complemento char(100),
bairro char(50),
cidade char(50) not null,
estado char(20) not null,
pais char(20) not null,
CEP char(10))
cargo(
cod_cargo int not null primary key identity(1,1),
cod_departamento int not null foreign key references departamento,
nome_cargo char(20) not null)
departamento(
cod_departamento int not null primary key identity(1,1),
nome_departamento char(50) not null)

 

 

Consigo retornar os valores correspondentes, alinhando as chaves secundárias às primárias.

 

ex:

 

select nome,nome_meio,sobrenome,nome_cargo,nome_departamento,bairro,cidade,estado,pais from endereco as en
inner join funcionarios as fu on (fu.cod_funcionarios = en.cod_funcionarios)
inner join cargo as ca on (fu.cod_cargo = ca.cod_cargo)
inner join departamento as de on (ca.cod_departamento = de.cod_departamento)
Porém, como farei para popular as tabelas funcionarios e endereco preenchendo-as simultaneamente com o inner join?
Tipo algo parecido com:
insert into funcionarios(nome,nome_meio,sobrenome),cargo(nome_cargo),departamento(nome_departamento),endereco(bairro,cidade,estado,pais) values (...,...,...,...,...,...,)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um INSERT por vez.

 

INSERT INTO FUNCIONARIOS (NOME, NOME_MEIO,SOBRENOME) 
 select nome,nome_meio,sobrenomefrom endereco as en inner join funcionarios as fu on (fu.cod_funcionarios = en.cod_funcionarios)               inner join cargo as ca on (fu.cod_cargo = ca.cod_cargo)               inner join departamento as de on (ca.cod_departamento = de.cod_departamento)
Mas claro, isso depende da aplicação e do contexto do seu prblema.
[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.