我有一个mysql查询,该查询通过product_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中输入了一个或多个条目,则此查询将提供所有日期。我只需要每个product_id的最新条目。因此,在下面的小提琴中,它应该导致3个不同的项目,它们的日期均为最新。
我创建了一个sql小提琴,以向您展示我的意思,并使您更轻松地进行编辑。我已经尝试了子查询,但都无济于事。
干杯
您可以获得子查询中date
每个product_id
查询的最新信息,结果是在表上进行联接productdetail
例如。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句