[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