25/09/2015

Query SQL

Caros, estou com um exercício que não sei direito como resolver! Tenho estas 3 tabelas abaixo e preciso da seguinte query: "CRIAR UMA QUERY PARA LISTAR OS CLIENTES E O VALOR DA ÚLTIMA COMPRA. RETORNAR O ID_CLIENTE, CPF, NOME, VALOR_ULTIMA_COMPRA"

- CLIENTE
ID_CLIENTE
CPF
NOME
DATA_NASCIMENTO
SEXO (MASCULINO/FEMININO)
LIMITE_AUTORIZADO
LIMITE_UTILIZADO
SITUACAO_CLIENTE (B-BLOQUEADO/A-ATIVO/C-CANCELADO)

- CLIENTE_CARTAO
ID_CLIENTE
ID_CARTAO

- COMPRA
ID_COMPRA
ID_LOJA
ID_CARTAO
DATA_DA_COMPRA
VALOR_DA_COMPRA
ID_FATURA

Qual a melhor maneira para fazer?

Grato.

Renato Ranzani

Respostas

25/09/2015

Damaso.jr

Boa Tarde Renato,

Eu faria usando inner join, Faria desta forma

SELECT C.ID_CLIENTE AS 'Código Cliente', C.CPF AS 'CPF Cliente', CP.VALOR_ULTIMA_COMPRA AS 'Última Compra'
FROM CLIENTES C
INNER JOIN CLIENTE_CARTAO CC ON CLIENTE.ID_CLIENTE = CLIENTE_CARTAO.ID_CLIENTE
INNER JOIN COMPRA CP ON CLIENTE_CARTAO.ID_CARTAO = COMPRA.ID_CARTAO

Espero ter ajudado.
Responder Citar

25/09/2015

Renato Ranzani

Boa Tarde Renato, Eu faria usando inner join, Faria desta forma SELECT C.ID_CLIENTE AS 'Código Cliente', C.CPF AS 'CPF Cliente', CP.VALOR_ULTIMA_COMPRA AS 'Última Compra' FROM CLIENTES C INNER JOIN CLIENTE_CARTAO CC ON CLIENTE.ID_CLIENTE = CLIENTE_CARTAO.ID_CLIENTE INNER JOIN COMPRA CP ON CLIENTE_CARTAO.ID_CARTAO = COMPRA.ID_CARTAO Espero ter ajudado.


Mas assim você não está trazendo o valor da última compra (baseado na DATA_DA_COMPRA da tabela COMPRA)!
Responder Citar

26/09/2015

Hector Figueroa

Renato, tenta esse ai

select cl.id_cliente, cl.cpf, cl.nome, co.valor_da_compra VALOR_ULTIMA_COMPRA
from TESTE_COMPRA co  
 inner join (select cc.id_cliente, co.id_cartao, max(co.data_da_compra) dataUltimaCompra
             from TESTE_COMPRA co
              inner join TESTE_CLIENTE_CARTAO cc on cc.id_cartao = co.id_cartao
             group by cc.id_cliente, co.id_cartao) ultimaCompra on ultimaCompra.id_cartao = co.id_cartao and ultimaCompra.dataUltimaCompra = co.data_da_compra
 inner join TESTE_CLIENTE cl on cl.id_cliente = ultimaCompra.id_cliente;
Responder Citar