2017-04-08 1 views
-1

Voici le schéma de la tableComment obtenir le dernier prix mis à jour à partir d'un tableau croisé dynamique dans MYSQL

clients

------------------------------ 
id name 
------------------------------ 
1 joe 
4 jane 

produits

------------------------------ 
id title 
------------------------------ 
1 iphone 
2 ipad 

customers_products

------------------------------ 
id product_id customer_id 
------------------------------ 
1 1  1 
2 2  1 
3 1  5 
4 1  9 

prix

------------------------------------------- 
id product_id price created_at 
------------------------------------------- 
3 1  300   2017-04-01 
4 2  450   2017-04-01 
5 2  500   2017-04-02 
6 1  320   2017-04-04 
7 1  200   2017-04-05 

Ce que je suis en train de faire est ce résultat du dernier prix de chaque produits classés par ID utilisateur, comme celui-ci

user_id product_id  last_price 
1  1    200    

Quel est le dernier prix mis à jour du produit n ° 1 (price_history ligne no 7)

ce que je l'ai fait jusqu'à présent et il a donné des résultats incorrects

select 
id,prices.price as current_price,customers_products as price 
from prices 
join products on products.id = prices.product_id 
join customers_products on customers_products.product_id = prices.product_id 
where customers_products.customer_id = 1 
group by prices.product_id order by prices.id desc 

est-ce vrai J'apprécie votre aide les gars!

Merci!

+0

Quelle est la sortie de votre requête, et ce qui est faux exactement avec la sortie? –

Répondre

1

Vous pouvez utiliser un tuple dans lequel pour en obtenir le prix max joindre à votre customers_products

select customers_products.customer_id , customers_products.product_id, prices.price as last_price 
from customers_products 
inner join prices on prices.product_id = customers_products 
where (created_at ,product_id) in (
    select max(created_at), product_id 
    from price 
    group product_id 
)