Problemas com subConsultas

11/02/2014

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.

Delivery-ti

Respostas

11/02/2014

Marisiana

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 Citar

11/02/2014

Alex Lekao

No Comments... rsrsr
Responder Citar

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 Citar

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 Citar

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 Citar

11/02/2014

Delivery-ti

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 Citar

11/02/2014

Delivery-ti

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 Citar

11/02/2014

Delivery-ti

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 Citar

11/02/2014

Marisiana

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 Citar

11/02/2014

Marisiana

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 Citar

11/02/2014

Delivery-ti

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 Citar

11/02/2014

Marisiana

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

11/02/2014

Marisiana

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 Citar

11/02/2014

Delivery-ti

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 Citar

11/02/2014

Delivery-ti

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