Estou tendo dificuldades para utilizar o update em consultas com inner join .
Quero aumentar o salário apenas dos clientes que compraram cd , fazendo tudo de uma vez , imaginando não saber o numero de todos meus clientes .
Vou tentar explicar :
Vou utilizar essas três tabelas
create database pinheiros
-- Clientes (cod_cli , nome_cli, salario )
-- Titulo (cod_prod , nome_prod, valor , qtd)
-- Pedido (cod_ped ,num_pedi, qtd_venda, data do pedido , cod_cli , cod_prod )
use pinheiros
create table clientes (cod_cli int primary key not null ,
nome_cli varchar(40),salario money not null check(salario > 0 ))
create table titulo (cod_prod int primary key not null ,
nome_prod varchar(40), valor money not null check (valor > 0),
qtd int check (qtd > 0))
create table pedido (cod_ped int not null ,
num_ped int not null ,
qtd_ped int not null ,
dt_pedido smalldatetime not null,
cod_cli int foreign key references clientes (cod_cli),
cod_prod int foreign key references titulo (cod_prod),
primary key (cod_prod, num_ped))
-- Inserindo dados nas tabelas
select * from clientes
insert into clientes values (01,'Wellington',1500)
insert into clientes values (02,'Vanessa',950)
insert into clientes values (03,'Alexandre',750)
insert into clientes values (04,'Cíntia',1250)
insert into clientes values (05,'Rodrigo',680)
insert into clientes values (06,'Carol',2400)
insert into clientes values (07,'Rafael',800)
select * from titulo
insert into titulo values (01,'CD-Rappa',25,500)
insert into titulo values (02,'CD-Ivete Sangalo',38,2000)
insert into titulo values (03,'CD-Revelação',20,300)
insert into titulo values (04,'CD-Babado Novo',22,350)
insert into titulo values (05,'CD-Roberto Carlos',30,150)
insert into titulo values (06,'CD-Daniel',28,400)
insert into titulo values (07,'CD-Carnaval 2005',32,700)
insert into titulo values (08,'CD-Sandy & Junior',42,650)
insert into titulo values (09,'CD-Capital Inicial',30,260)
select * from pedido
insert into pedido values (001,01,2,'2005-05-22',01,3)
insert into pedido values (002,02,1,'2005-05-22',02,1)
insert into pedido values (003,03,3,'2005-05-22',05,2)
insert into pedido values (004,04,1,'2005-05-22',01,4)
insert into pedido values (005,05,1,'2005-05-22',05,8)
insert into pedido values (006,06,2,'2005-05-22',06,5)
insert into pedido values (007,07,4,'2005-05-22',07,6)
insert into pedido values (005,08,1,'2005-05-22',02,7)
Sei quais clients compraram Cd´s fazendo essa consulta
-- selecionar o nome do cliente e qual CD ele compro
select clientes.nome_cli , titulo.nome_prod
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod
order by clientes.nome_cli asc
e os que não compraram cd´s fazendo essa consulta
-- selecionar os clientes que não compraram nenhum cd
select nome_cli
from clientes
where cod_cli not in(select pedido.cod_cli
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod )
ENTÃO GOSTARIA DE DAR UM AUMENTO DE 10 % NO SALÁRIO DOS CLIENTES QUE COMPRARAM CD . DO JEITO QUE SEI ... ACABO DANDO AUMENTO PARA TODOS . IMAGINANDO NÃO SABER A QUANTIDADE CERTA DE CLIENTES . COMO POSSO FAZER ISSO . DIZEM QUE PRECISO DE ALGO FEITO EM CURSOR ... alguém PODE ME AJUDAR ?
Pois do jeito que faço ... acabo dando aumento para todos clientes.
-- fazer uma atualização no salario das pessoas que compram cd ( dando um aumento de 10 % )
if exists
(select clientes.nome_cli
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod)
begin
update clientes set salario = salario + (salario/100*10)
end
Alguém pode me dizer como posso fazer uma atualização no salário das pessoas que compram cd ( dando um aumento de 10 % ) ?
Pergunta
Guest - Wellington -
Boa noite Galera,
Estou tendo dificuldades para utilizar o update em consultas com inner join .
Quero aumentar o salário apenas dos clientes que compraram cd , fazendo tudo de uma vez , imaginando não saber o numero de todos meus clientes .
Vou tentar explicar :
Vou utilizar essas três tabelas
create database pinheiros
-- Clientes (cod_cli , nome_cli, salario )
-- Titulo (cod_prod , nome_prod, valor , qtd)
-- Pedido (cod_ped ,num_pedi, qtd_venda, data do pedido , cod_cli , cod_prod )
use pinheiros
create table clientes (cod_cli int primary key not null ,
nome_cli varchar(40),salario money not null check(salario > 0 ))
create table titulo (cod_prod int primary key not null ,
nome_prod varchar(40), valor money not null check (valor > 0),
qtd int check (qtd > 0))
create table pedido (cod_ped int not null ,
num_ped int not null ,
qtd_ped int not null ,
dt_pedido smalldatetime not null,
cod_cli int foreign key references clientes (cod_cli),
cod_prod int foreign key references titulo (cod_prod),
primary key (cod_prod, num_ped))
-- Inserindo dados nas tabelas
select * from clientes
insert into clientes values (01,'Wellington',1500)
insert into clientes values (02,'Vanessa',950)
insert into clientes values (03,'Alexandre',750)
insert into clientes values (04,'Cíntia',1250)
insert into clientes values (05,'Rodrigo',680)
insert into clientes values (06,'Carol',2400)
insert into clientes values (07,'Rafael',800)
select * from titulo
insert into titulo values (01,'CD-Rappa',25,500)
insert into titulo values (02,'CD-Ivete Sangalo',38,2000)
insert into titulo values (03,'CD-Revelação',20,300)
insert into titulo values (04,'CD-Babado Novo',22,350)
insert into titulo values (05,'CD-Roberto Carlos',30,150)
insert into titulo values (06,'CD-Daniel',28,400)
insert into titulo values (07,'CD-Carnaval 2005',32,700)
insert into titulo values (08,'CD-Sandy & Junior',42,650)
insert into titulo values (09,'CD-Capital Inicial',30,260)
select * from pedido
insert into pedido values (001,01,2,'2005-05-22',01,3)
insert into pedido values (002,02,1,'2005-05-22',02,1)
insert into pedido values (003,03,3,'2005-05-22',05,2)
insert into pedido values (004,04,1,'2005-05-22',01,4)
insert into pedido values (005,05,1,'2005-05-22',05,8)
insert into pedido values (006,06,2,'2005-05-22',06,5)
insert into pedido values (007,07,4,'2005-05-22',07,6)
insert into pedido values (005,08,1,'2005-05-22',02,7)
Sei quais clients compraram Cd´s fazendo essa consulta
-- selecionar o nome do cliente e qual CD ele compro
select clientes.nome_cli , titulo.nome_prod
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod
order by clientes.nome_cli asc
e os que não compraram cd´s fazendo essa consulta
-- selecionar os clientes que não compraram nenhum cd
select nome_cli
from clientes
where cod_cli not in(select pedido.cod_cli
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod )
ENTÃO GOSTARIA DE DAR UM AUMENTO DE 10 % NO SALÁRIO DOS CLIENTES QUE COMPRARAM CD . DO JEITO QUE SEI ... ACABO DANDO AUMENTO PARA TODOS . IMAGINANDO NÃO SABER A QUANTIDADE CERTA DE CLIENTES . COMO POSSO FAZER ISSO . DIZEM QUE PRECISO DE ALGO FEITO EM CURSOR ... alguém PODE ME AJUDAR ?
Pois do jeito que faço ... acabo dando aumento para todos clientes.
-- fazer uma atualização no salario das pessoas que compram cd ( dando um aumento de 10 % )
if exists
(select clientes.nome_cli
from pedido
inner join clientes on pedido.cod_cli = clientes.cod_cli
inner join titulo on pedido.cod_prod = titulo.cod_prod)
begin
update clientes set salario = salario + (salario/100*10)
end
Alguém pode me dizer como posso fazer uma atualização no salário das pessoas que compram cd ( dando um aumento de 10 % ) ?
Desde já eu agradeço pela atenção
Wellington
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.