2012-08-14 62 views
0

我目前正在製作應用程序更新程序的後端,並使用我的服務器來跟蹤所有文件和修訂版。從多個ID獲取最新日期行

目前,我有我的數據庫中的兩個表:

dev_version_control_files 
Columns: FileID, FileName 

dev_version_control_versions 
Columns: VersionID, FileID, Version, DateReleased, FileLocation 

的文件表保持一個記錄每一個版本控制下的文件。版本表爲每個文件的每個版本保留一條記錄,以及其發佈日期,版本號和位置。

現在我想要的是獲取文件表中每個文件的最後一條記錄(更新)。這應該由日期字段決定,該日期字段包含發佈時的時間戳。

我不想在每次更新請求時瀏覽版本表中的每一行,那麼在一個查詢中可以這樣做嗎?

回答

4

您需要首先獲得每個FileID最大DateReleased的與dev_version_control_filesdev_version_control_versions

SELECT a.*, b.Version, DateReleased 
FROM dev_version_control_files a 
      INNER JOIN dev_version_control_versions b 
       on a.FileID = b.FileID 
      INNER JOIN 
      (
       SELECT FileID, MAX(DateReleased) MaxDate 
       FROM dev_version_control_versions 
       GROUP BY FileID 
      ) c ON b.FileID = c.FileID AND 
        b.DateReleased = c.MaxDate 
+0

工作,感謝您的幫助! – SorenA 2012-08-14 04:59:09

+0

不用客氣@SorenA – 2012-08-14 05:31:10

4

我不是SQL專家,但會工作嗎?

SELECT f.*, v.DateReleased 
FROM dev_version_control_files f 
INNER JOIN (
    SELECT FileId, MAX(DateReleased) AS DateReleased 
    FROM dev_version_control_versions 
    GROUP BY 1) v ON f.FileID = v.FileID 

我測試了這一點對一個示例表看到現在(我覺得有些語法可能會關閉),但這個想法是由ID從versions表和他們羣拉的最大日期,然後,加入到ID爲files表。這是你已經在做什麼?

+0

這一個後來加入他們並沒有給我的整個行,它返回的每4行,即使只有兩個,所以我害怕它不是我想要的。感謝您嘗試 – SorenA 2012-08-14 04:48:39

+0

Gotcha - 所有可能的列?我想我知道它爲什麼重複,所以我會更新(快速學習,我應該在寫入之前測試SQL :)) – RocketDonkey 2012-08-14 04:51:31

+0

是的,來自兩個錶行的所有字段。但'版本'表中的行應該是最新的日期版本 – SorenA 2012-08-14 04:57:09

1

假設你已經在第二表中的至少一個版本記錄:

SELECT FileID, FileName, MAX(DateReleased) 
FROM dev_version_control_files 
INNER JOIN dev_version_control_versions ON FileID 
GROUP BY FileID, FileName 

這是不準確的SQL,它是我怎麼會去這樣一個粗略的想法。

+0

我修改它以返回我需要的字段,它的工作原理非常完美,只是它不返回最高日期的行,不幸的是它返回最低的行。 'SELECT f.FileID,f.FileName,v.Version,v.FileLocation,MAX(v.DateReleased)AS DateReleased FROM dev_version_control_files f INNER JOIN dev_version_control_versions v ON f.FileID GROUP BY f.FileID,f.FileName' – SorenA 2012-08-14 04:50:41

+0

另一個更新,它不會爲正確的ID返回正確的日期,它將返回其中最高的一個(有些文件不會每次更新,因此獲取相應ID的最新更新至關重要) – SorenA 2012-08-14 04:53:59