Problemas com subConsultas
11/02/2014
0
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.
Posts
11/02/2014
Marisiana Battistella
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....
11/02/2014
Isaac Jose
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
11/02/2014
Isaac Jose
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
11/02/2014
Isaac Jose
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
11/02/2014
Celiol.
--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.
11/02/2014
Celiol.
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.
11/02/2014
Celiol.
-- 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,
11/02/2014
Marisiana Battistella
--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
11/02/2014
Marisiana Battistella
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.
11/02/2014
Celiol.
--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.
11/02/2014
Marisiana Battistella
Segue a mesma lógica...
11/02/2014
Marisiana Battistella
Testa ai pra ver se é isso, executa o teu subselect sozinho pra ver como é o retorno dele....
11/02/2014
Celiol.
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.
11/02/2014
Celiol.
Obrigado.
Clique aqui para fazer login e interagir na Comunidade :)