【发布时间】:2016-02-11 21:59:09
【问题描述】:
所以我正在开发一个系统,以便在商店检查之前进行最佳管理,当您在检查概览页面上时,您会看到下表
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
谁能帮我完成这个工作?
【问题讨论】:
标签: php mysql sql pdo left-join