Problemas com subConsultas

11/02/2014

0

Ola alguém que manja pode dar uma força tenho que fazer essas consultas?

Tenhos as seguintes tabelas galera?

Cliente | Item_Pedido |
Cod_cliente (num,5) (PK) | Num_pedido (FK) PK |
Nome_cliente (alfa,30) | Cod_produto (FK) |
Endereco (alfa,25) | Quantidade num(5) |
Cidade (alfa,20) | |
Cep (alfa,10) | |
UF (alfa,2) | |
------------------------------------------|------------------------------------------------------------------------------------------------------- |
Produto | Pedido | Vendedor |
Cod_produto (num,3) (PK) | Num_pedido (num,3) (P.K) | Cod_vendedor (num,3) (PK) |
Descricao (alfa,20) | Prazo_entrega (data) | Nome_vendedor (alfa,30) |
Unidade (alfa,2) | Cod_cliente (FK) | Faixa_comissao (num(4,2) ) |
Valor_unitario (num(6,2)) | Cod_vendedor (FK) | Salario_fixo (num(7,2)) |
--------------------------------------------------------------------------------------------------------------------------------------------------

E as seguintes consultas para realizar?

Quais os clientes que só compraram com o vendedor com codigo 10 e com mais nenhum outro vendedor (fidelidade).
Quais vendedores não fizeram mais de 5 pedidos.
Quais os vendedores não fizeram nenhum pedido no mês de maio/2007
Listar o nome do vendedor que mais fez pedidos.
Listar o nome dos clientes e o número total de pedidos associados a cada cliente em ordem decrescente de vendas, isto é do que mais tem pedidos para o que menos tem.
Excluir todos os itens dos pedidos feitos pelo cliente de código =2;
Alterar o valor unitário de todos os produtos sem vendas no ano de 2007 para menos 20%.


muito obrigado miller.
Celiol.

Celiol.

Responder

Posts

11/02/2014

Marisiana Battistella

Bom dia! =)
Você já tentou resolver alguma das situações?
Sugiro que vc vá postando as tuas dúvidas, assim podemos interagir contigo e ir dando dicas e explicações sobre cada dúvida que vc tiver....
Responder

11/02/2014

Alex Lekao

No Comments... rsrsr
Responder

11/02/2014

Isaac Jose

Bom dia a todos.
Presado entendo suas duvidas como a todos..

sei que no principio tudo parece dificil ...
porem nao acho que seria construtivo para vc profissionalmente lhe entregar tudo... como a colega disse tente fazer ao maximo e poste suas duvidas que vc tera...

mais vou fazer 2 para vc ter um base.. porem com pequenos erros para vc corrigilos..

-- abrindo uma transação
begin tran
--verificando qtd de transação
select @@TRANCOUNT as qtd_transacoes

pronto com isso é possivel manipular o banco sem correr o risco de fazer algo indesejado ou se preferir de fazer besteira rsr
procure utilizar isso sempre pois um dia ira jurar amor eterno a esse comando..

o que vc colocou como penultimo item para mim deve ser o primeiro a ser feito ja que nao a interrese desses clientes.


delete da_tabela_cliente
where campo = condicao

ou seja

delete da tabela xpto
quando o campo x for = a y..


select COUNT(numerodeperidos) pedido ,nomecliente from tabela
group by nomecliente
order by nomecliente desc


espero que ajude

att Isaac
Responder

11/02/2014

Isaac Jose

Bom dia a todos.
Presado entendo suas duvidas como a todos..

sei que no principio tudo parece dificil ...
porem nao acho que seria construtivo para vc profissionalmente lhe entregar tudo... como a colega disse tente fazer ao maximo e poste suas duvidas que vc tera...

mais vou fazer 2 para vc ter um base.. porem com pequenos erros para vc corrigilos..

-- abrindo uma transação
begin tran
--verificando qtd de transação
select @@TRANCOUNT as qtd_transacoes

pronto com isso é possivel manipular o banco sem correr o risco de fazer algo indesejado ou se preferir de fazer besteira rsr
procure utilizar isso sempre pois um dia ira jurar amor eterno a esse comando..

o que vc colocou como penultimo item para mim deve ser o primeiro a ser feito ja que nao a interrese desses clientes.


delete da_tabela_cliente
where campo = condicao

ou seja

delete da tabela xpto
quando o campo x for = a y..


select COUNT(numerodeperidos) pedido ,nomecliente from tabela
group by nomecliente
order by nomecliente desc


espero que ajude

att Isaac
Responder

11/02/2014

Isaac Jose

Bom dia a todos.
Presado entendo suas duvidas como a todos..

sei que no principio tudo parece dificil ...
porem nao acho que seria construtivo para vc profissionalmente lhe entregar tudo... como a colega disse tente fazer ao maximo e poste suas duvidas que vc tera...

mais vou fazer 2 para vc ter um base.. porem com pequenos erros para vc corrigilos..

-- abrindo uma transação
begin tran
--verificando qtd de transação
select @@TRANCOUNT as qtd_transacoes

pronto com isso é possivel manipular o banco sem correr o risco de fazer algo indesejado ou se preferir de fazer besteira rsr
procure utilizar isso sempre pois um dia ira jurar amor eterno a esse comando..

o que vc colocou como penultimo item para mim deve ser o primeiro a ser feito ja que nao a interrese desses clientes.


delete da_tabela_cliente
where campo = condicao

ou seja

delete da tabela xpto
quando o campo x for = a y..


select COUNT(numerodeperidos) pedido ,nomecliente from tabela
group by nomecliente
order by nomecliente desc





caso funcione e seja realmente isso que vc quer

execute o comando

commit
o mesmo ira confirmar o que vc acabou de fazer

caso nao seja isso utilize o rollback
para voltar ao estado inicial..

e começe o processo novamente ate obter o resultado esperado.

espero que ajude

att Isaac

Responder

11/02/2014

Celiol.

concordo com ela galera mas estou tentando sim ja fiz 12 mas esses ai nao estou nem conseguindo rastrar na tabela o que deve acontecer e que ja to de cabeça quente mas vou postando aqui pra voces.

--quais clcientes compraram somente com o vendedor de codigo 10?

select tbPedido.codCliente from tbPedido where numPedido = (select codVendedor from tbPedido where codVendedor = 10)

fiz assim mas ele ta me retarnando a consulta fazia sem nada.
Responder

11/02/2014

Celiol.

galera tentei outro aqui e ainda não consegui fazer deem uma olhada.

Excluir todos os itens dos pedidos feitos pelo cliente de código =2;

delete from tbitemPedido where numPedido = (select numPedido from tbPedido where tbPedido.codCliente = 002)

deu erro, ta bem difícil essa parte aqui galera.
Responder

11/02/2014

Celiol.

bem galera estou tentando mas parece que ta ficando mais claro eu sem fome e descançado mas...

-- quais vendedores nao fizeram pedidos no mes de março?

consulta: select distinct codVendedor from tbPedido where codVendedor not in (select numPedido from tbPedido where DATEPART (M, prazoPedido) = 03);

no inicio achei que tava certo mas ai fui e inseri: insert into tbPedido values (009, '03/12/2011', 004, 002)

mas ainda assim ele retornou o vendedor 2,
Responder

11/02/2014

Marisiana Battistella

concordo com ela galera mas estou tentando sim ja fiz 12 mas esses ai nao estou nem conseguindo rastrar na tabela o que deve acontecer e que ja to de cabeça quente mas vou postando aqui pra voces.

--quais clcientes compraram somente com o vendedor de codigo 10?

select tbPedido.codCliente from tbPedido where numPedido = (select codVendedor from tbPedido where codVendedor = 10)

fiz assim mas ele ta me retarnando a consulta fazia sem nada.


Isso ai!!! Assim fica mais fácil de saber onde vc tem dificuldades...

Seguinte...
Neste caso, vc não precisa utilizar subselect para pegar os vendedores de código 10.
Essa é uma "regra de negócio" que deve ser tratada na tua cláusula where, pois toda a consulta deve ser restringida sob essa condição.
E no mais é só vc ligar as chaves estrangeira corretamente.

A SQL que vc precisa é esse...

select c.nome_cliente
from cliente c
join pedido p
on p.cod_cliente = c.cod_cliente
join vendedor v
on p.cod_vendedor = v.cod_vendedor
where v.cod_vendedor = 10


Utilizei o padrão ANSI para pra criar o SQL, mas caso vc não tenha aprendido ainda, é a mesma coisas que vc fazer assim:

select c.nome_cliente
from cliente c,
pedido p,
vendedor v
where v.cod_vendedor = 10
and p.cod_cliente = c.cod_cliente
and p.cod_vendedor = v.cod_vendedor
Responder

11/02/2014

Marisiana Battistella

galera tentei outro aqui e ainda não consegui fazer deem uma olhada.

Excluir todos os itens dos pedidos feitos pelo cliente de código =2;

delete from tbitemPedido where numPedido = (select numPedido from tbPedido where tbPedido.codCliente = 002)

deu erro, ta bem difícil essa parte aqui galera.



Aqui estamos com a mesma situação... Vc não precisa utilizar esse subselect..
Na claúsula WHERE vc deve definir qual é número do pedido que terá os itens excluidos ( numPedido = 2 )
e deve fazer a ligação de chave estrangeira da tabela Item_Pedido com chave primária da tabela Pedido.
Responder

11/02/2014

Celiol.

valeu esta dando certo Mari. Olha esse que tentei fazer

--quais clientes compraram apenas com vendedor de codigo igual a003

select tbPedido.codCliente from tbPedido where numPedido in(select codVendedor from tbPedido where codVendedor = '003')

achei que tinha dado certo mas inseri mais uma venda com vendedor de codigo 003 e ele nao trouxe. Ha e seu colocar o sinal de = no lugar do in ele da um erro muito estranho, sabe como posso resolver. mas estou tentando la.

Abraços.
Responder

11/02/2014

Marisiana Battistella

É a mesma situação da questão "quais clcientes compraram somente com o vendedor de codigo 10?"
Segue a mesma lógica...
Responder

11/02/2014

Marisiana Battistella

Provavelmente o erro que está ocorrendo quando vc troca o "in" por = é porque o subselect tá retornando mais de um registro...
Testa ai pra ver se é isso, executa o teu subselect sozinho pra ver como é o retorno dele....
Responder

11/02/2014

Celiol.

Ola meu subSelect retornou certo so os clientes com venda igual a 3
mas quando coloco o codigo todo ele da um erro.

--quais clientes compraram somente como o vendedor de codigo 003
select codCliente from tbPedido where codVendedor in(
select codVendedor, numPedido from tbPedido where codVendedor = 3)

erro: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Responder

11/02/2014

Celiol.

Mari este ultimo tambem ja arrumei vou tentar os outros agora estou acabando
Obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar