[firebase-br] SQL

Paulo pcesardias em gmail.com
Qui Maio 24 17:43:11 -03 2012


Muito obrigado, fiz algumas alterações e com os testes que fiz tá ok. Vou fazer mais um montão de testes mas acho que é isso mesmo.
Estou passando abaixo o que fiz, não sei se há outra forma melhor de fazer, se você souber e puder dar mais uma ajuda, eu agradeço.

Ficou mais ou menos assim:


SELECT Clientes.IDCliente
FROM Clientes
	INNER JOIN PEDIDOS ON (Pedidos.IDCliente=Clientes.IDCliente)
	/*
	 Aqui também somente o último pedido, não sei se é a melhor forma fazer isso no join, mas é como está funcionando aqui
	*/
	AND  (Pedidos.IDPedido=(SELECT MAX(IDPedido) FROM Pedidos WHERE(IDCliente=Clientes.IDCliente)))

WHERE (EXISTS(SELECT Pedidos.IDCliente FROM Pedidos
            WHERE Pedidos.DTPedido BETWEEN :DATA1 AND :DATA2
            AND   Pedidos.IDCliente = Clientes.IDCliente))
     
   or (EXISTS(SELECT Promocoes.IDCliente FROM Promocoes
            WHERE Promocoes.DTPromocao BETWEEN :DATA1 AND :DATA2
            AND   Promocoes.IDCliente = Clientes.IDCliente  
	   AND (Promocoes.IDPROMOCAO=(SELECT MAX(IDPROMOCAO) FROM Promocoes WHERE(IDCliente=Promocoes.IDCliente)))
	/*
	 Última promoção do CLIENTE
	*/



Muito obrigado pela sua ajuda e a todos que sempre quebram o galho de quem precisa!!!



Paulo


Em 24/05/2012, às 16:18, Matheus(GMAIL) escreveu:

> Seria o que eu passei e para você obter os dados dai de qual faça um sub
> select para cada um que irá resolver.
> 
> Ali tu vai ter só os clientes que tem alguma promoção ou pedido...
> 
> -----Original Message-----
> From: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> On Behalf Of Paulo
> Sent: quinta-feira, 24 de maio de 2012 16:20
> To: FireBase
> Subject: Re: [firebase-br] SQL
> 
> Olá!
> 
> 
> Na realidade preciso dos dados do cliente e do último pedido e os mesmo
> dados se ele não fez pedido não teve os dados atualizados mas participou de
> uma promoção, tudo com base no intervalo de datas.
> 
> Se os dados foram atualizados e/ou fez algum pedido e/ou participou de
> promoção eu seleciono o cliente.
> 
> Já tentei com inner join, left join etc., max() para pegar o último
> pedido/promoção mas sempre tenho duplicidade.
> 
> 
> obrigado,
> 
> Paulo
> 
> Em 24/05/2012, às 16:02, Wilson Rosa escreveu:
> 
>> Paulo,
>> 
>> Quando você diz *"todos os dados de cada cliente"*, você quer dizer todos
>> os pedidos e todas as promoções no intervalo de datas?
>> 
>> Quando você diz *"Preciso selecionar um cliente e somente um"* você quer
>> dizer que irá informar o código do cliente a ser pesquisado, ou
>> independente de quantos clientes estiverem no intervalo de datas é pra
>> trazer somente um cliente (o primeiro)?
>> 
>> 
>> *Wilson Rosa*
>> Desenvolvedor Desk
>> *wsrosa em gmail.com
>> *
>> *
>> *
>> 
>> 
>> 
>> Em 24 de maio de 2012 15:38, Paulo <pcesardias em gmail.com> escreveu:
>> 
>>> Boa tarde a todos!
>>> 
>>> Possuo tres tabelas e estou tendo dificuldade pra extrair os dados como
>>> quero.
>>> 
>>> 1) Clientes
>>>      IDCliente                       1
>>>      DTAtualizacao           1/5/2012
>>> 
>>> 2) Pedidos
>>>      IDCliente                       1
>>>      DTPedido                        3/5/2012
>>> 
>>> 3) Promocoes
>>>      IDCliente                       1
>>>      DTPromocao              3/5/2012
>>> 
>>> Preciso selecionar um cliente e somente um se ao menos uma das datas
>>> estiver dentro de um intervalo que será passado. Já tentei um monte de
>>> coisas e não consegui.
>>> 
>>> Exemplo:  Se eu passar o intervalo de 1/5/2012 até 24/5/2012, listo todos
>>> os dados de cada cliente que possua uma das datas dentro deste.
>>> 
>>> Será que alguém pode dar uma ajuda?
>>> 
>>> 
>>> Obrigado,
>>> 
>>> Pauloß
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>> 
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista