[英]Left Join to get previous record sql
因此,我正在開發一種系統,以在商店中進行支票檢查之前最好地進行管理,並且當您進入支票概述頁面時,您會看到下表
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
有人可以幫助我使它正常工作嗎?
Steffan:您需要在問題和業務邏輯中提供所有表的列。 哪個規則描述“過時的最佳日期”? “ New Best Before date”是否總是大於sysdate? 另外,確定“舊日期前最佳”的查詢是否總是在提交“日期前最佳”之前觸發?
CK。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.