簡體   English   中英

最后在引用表mysql中出現外鍵

[英]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),然后在stagelastSeen每個打開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

SQL小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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