因此,我正在开发一个系统,以便在商店检查前进行最佳管理,当您在支票的概述页面上查看下表时
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
任何能帮我解决问题的人都可以帮忙吗?
答案 0 :(得分:0)
STEFFAN: 您需要在问题和业务逻辑中提供所有表的列。 什么规则描述了“最好的日期之前”? “New Best Before date”总是大于sysdate吗?另外,是否在提交“新的最佳日期之前”之前始终触发的查询是否确定“最佳日期之前”?
CK。