我正在爲客戶端構建一個報告模塊,而他們當前的過程使得我很難做到我正在嘗試做的事情。數據庫是MySQL,模塊是用PHP編寫的。選擇MySQL中某個記錄的下一次出現
本質上,我需要找到一個處理請求日期之間的訂單。夠簡單。然後,我需要在第一時間發現它的狀態設置爲航運,因爲它可以處理和運輸之間設置來回多次,如果返回的順序或warrantied等
但是,我需要這個在兩個單獨的查詢中完成。
我可以得到他們正在處理的訂單ID。我的問題是與第二個查詢,我在做什麼:
SELECT * FROM status_history WHERE orders_id IN {list_of_ids} AND status = 'shipped' GROUP BY orders_id
。
我的問題是,此查詢產生的'運送'狀態行可能在所需的之前/之後。
我知道主要的問題是他們的流程和我必須使用的遺留系統,但我無法改變。
我需要做的是: SELECT * FROM status_history WHERE orders_id IN <list_of_ids> AND status = 'shipped' AND date_added > {date at processing} AND date_added < {date at next occurrence of processing, if there is one} GROUP BY orders_id
爲什麼兩個查詢? – Strawberry
@Strawberry我需要從第一個編譯所有ID的列表,無論他們是否已發貨,然後如果他們已發貨,我需要額外的信息。 – David
這通常是帶外連接的單個查詢。考慮提供一些示例數據(理想情況下爲sqlfiddle)和期望的結果,作爲對您問題的編輯。 – Strawberry