mysql SELECT查询,具有需要最新表数据的多个联接

mysql SELECT查询,具有需要最新表数据的多个联接,mysql,select,join,Mysql,Select,Join,我有一个mysql查询,它通过产品id将3个表链接在一起 SELECT P.product_id, P.title, P.unit, Pp.date, Pp.price, Pp.wasprice, C.quantity, C.date_added FROM productdetail P INNER JOIN productprices Pp ON P.product_id = Pp.product_id RIGHT JOIN cart C ON Pp.product_id = C.pro

我有一个mysql查询,它通过产品id将3个表链接在一起

SELECT 
P.product_id, P.title, P.unit,
Pp.date, Pp.price, Pp.wasprice,
C.quantity, C.date_added
FROM productdetail P

INNER JOIN
productprices Pp
ON P.product_id = Pp.product_id

RIGHT JOIN
cart C
ON Pp.product_id = C.product_id
WHERE C.session = :session AND C.quantity > 0
如果在表productprices中输入了一个或多个条目,则此查询将提供所有日期。我只需要每个产品id的最新条目。因此,在下面的提琴中,它应该会产生3个不同的条目,所有条目都带有最新日期

我创建了一个,向您展示我的意思,并使您更容易编辑。我尝试过子查询,但都没有用


干杯

您可以在子查询中为每个
产品id
获取最新的
日期
,结果是在表
productdetail

例如

选择
产品编号,产品名称,
第页日期,第页价格,
C.数量,C.添加日期
从…起
产品详细信息P
内连接
产品价格Pp
在P.product\u id=Pp.product\u id上
内连接
(

选择product_id,MAX(date)作为MAX_date——谢谢John,我不知道从哪里开始子查询。但是你给出答案的方式让它更清楚了。干杯:)
SELECT 
P.product_id, P.title,
Pp.date, Pp.price,
C.quantity, C.date_added
FROM
productdetail P
INNER JOIN
productprices Pp
ON P.product_id = Pp.product_id     
INNER JOIN

(
  SELECT product_id, MAX(date) AS max_date      -- << this part will get the latest row
  FROM productprices                            -- << in every product_id
  GROUP BY product_id
) maxx 
ON Pp.product_id = maxx.product_id 

AND Pp.date = maxx.max_date
RIGHT JOIN
cart C
ON Pp.product_id = C.product_id
WHERE C.session = 12345 AND C.quantity > 0