更新:問題精緻,我仍然需要幫助!如何獲取數據庫條目的正確「版本」?
我有以下表結構:
表reports
:
ID | time | title | (extra columns)
1 | 1364762762 | xxx | ...
多object
表具有以下結構
ID | objectID | time | title | (extra columns)
1 | 1 | 1222222222 | ... | ...
2 | 2 | 1333333333 | ... | ...
3 | 3 | 1444444444 | ... | ...
4 | 1 | 1555555555 | ... | ...
在對象表中,上對象用相同的對象更新新版本ID是ins這些舊版本仍然可用。例如,請參閱objectID = 1
的條目在報告表中插入了report
,但從未更新/編輯。
我希望能夠做的是以下幾點:
對於我reports
表中的每個條目,我希望能夠查詢所有對象的狀態,像他們,當report
已創建。
例如,讓我們看一下上面帶有ID 1的示例報告。當它創建時(請參閱time
列),對象ID 1的當前版本是ID爲1的條目(條目ID 4不存在於那點)。 ObjectID 2也存在與它的條目ID爲2的當前版本。
我不知道如何實現此目的。
我可以使用,選擇由時間列的對象版本的查詢:
SELECT *
FROM (
SELECT *
FROM objects
WHERE time < [reportTime]
ORDER BY time DESC
)
GROUP BY objectID
讓不談論這個查詢的性能,它只是要明確什麼我想做的事情。我的問題是時間欄的比較。我認爲這是確保我得到了正確的對象版本,因爲系統時間可以改變「以任何理由」和時間列,然後會在它錯誤的數據,這將導致錯誤的結果沒有什麼好辦法。
什麼是另一種方式來做到這一點? 我想過沒有使用時間列這一點,而是一個全球增量價值,我知道整個數據庫表的插入順序。
有實現這幾個方法,你可以用一些架構信息(包括索引)編輯你的問題,例如數據甚至幾行 - 這將有助於有人建議做 – Steve
我依然是最好的方法建立模式,每個表的列數不同。我也可以根據需要創建儘可能多的索引;) – schlimpf