[英]Last occurrence of foreign key in reference table mysql
我有兩個表:return和return_details
返回設置如此 -
+ Return
- id
- orderNum
- startDate
- endDate
+ Return_Details
- id
- rid (Return.id)
- stage [this is essentially location]
- lastSeen [timeDate last seen)
我試圖發現,是“開放”的所有收益(其中Return.endDate == NULL),然后在stage
和lastSeen
每個打開Return.id
。
問題是我無法弄清楚如何在Return_Details中找到最后一次出現的Return.id。 目前我能夠使用MAX找到正確的lastSeen時間,但我如何抓住相應的階段。
這是我現在使用的查詢 -
SELECT r.so, rd.lastSeen, rd.stage, r.sotype, MAX(rd.lastSeen) as last
FROM repairs r
JOIN repair_details rd ON r.id = rd.rid
WHERE `enddate` IS NULL
GROUP BY r.so
ORDER BY lastSeen asc
任何有關如何使用一個查詢完成此操作的幫助將非常感激。 提前致謝!
這應該工作。
SELECT a.id, b.stage, b.lastSeen
FROM Return a
LEFT JOIN (SELECT rid, stage, MAX(lastSeen) AS lastSeen FROM Return_Details GROUP BY rid, stage) b ON b.rid = a.id
WHERE a.endDate IS NULL
編輯1:
此方法將為每個rid
找到MAX(id)
,然后根據MAX(id)
獲取詳細信息。
SELECT a.orderNum, c.stage, c.lastSeen
FROM repairs a
LEFT JOIN
(SELECT rid, MAX(id) AS id FROM repair_details
GROUP BY rid) b ON b.rid = a.id
LEFT JOIN
(SELECT id, stage, lastSeen FROM repair_details) c ON c.id = b.id
WHERE a.endDate IS NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.