Query SQL

SQL Server

Oracle

25/09/2015

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

Renato Ranzani

Curtidas 0

Respostas

Gilson Jr

Gilson Jr

25/09/2015

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.
GOSTEI 0
Renato Ranzani

Renato Ranzani

25/09/2015

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)!
GOSTEI 0
Hector Figueroa

Hector Figueroa

25/09/2015

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;
GOSTEI 0
POSTAR