Left Join获取以前的记录sql

时间:2015-11-10 21:25:27

标签: php mysql sql pdo left-join

因此,我正在开发一个系统,以便在商店检查前进行最佳管理,当您在支票的概述页面上查看下表时

Productgroup -> Productname -> Barcode -> Checked -> Checked Time -> New best before -> Old best before

在使用此查询之前,我设法收集了所有数据,但最好:

SELECT `thtchecksproducts`.*, productName, productGroup, productBarcode FROM `thtchecksproducts`
LEFT JOIN `products` ON thtchecksproducts.productID = products.productID 
WHERE `checkID`=:checkID ORDER BY checked DESC, productGroup ASC, productName ASC

现在我需要它用FROM表,thtchecksproducts做另一个左连接。它需要像上一个一样加入productID,但只能与匹配此查询的最后一条记录一起加入:

SELECT productID, max(id) FROM thtchecksproducts WHERE checkID IN (SELECT checkID FROM thtchecks WHERE userID=:userID AND closed=1 AND checkID IS NOT :checkID)

我想出了这个:

SELECT s1.*, productName, productGroup, productBarcode FROM `thtchecksproducts` s1
LEFT JOIN `products` ON thtchecksproducts.productID = products.productID
LEFT JOIN thtchecksproducts s2 ON s1.productID = s2.productID
AND s1.id = (SELECT productID, max(id) FROM thtchecksproducts 
WHERE checkID IN (SELECT checkID FROM thtchecks WHERE userID=:userID AND closed=1 AND checkID IS NOT :checkID) AND productID = s1.productID)


WHERE `checkID`=:checkID ORDER BY checked DESC, productGroup ASC, productName ASC

任何能帮我解决问题的人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

STEFFAN: 您需要在问题和业务逻辑中提供所有表的列。 什么规则描述了“最好的日期之前”? “New Best Before date”总是大于sysdate吗?另外,是否在提交“新的最佳日期之前”之前始终触发的查询是否确定“最佳日期之前”?

CK。