簡體   English   中英

左聯接以獲取以前的記錄sql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM