我有一個主表tblAssetMaster A
和一個移動表tblMovement M
。 我想抽取所有資產及其當前位置,因此需要爲每個資產獲取最新的移動條目。返回關聯表的單個(有限)行的多個列
場
- 答:由assetid,ASSETNAME
- L:MovementID,由assetid,CurrentLocation,LocationUpdated
我已經看了各種連接,子查詢,得到的查詢和我對信息過載感到困惑。什麼是最有效(最簡單)的方式來檢索這些信息。
我有一個主表tblAssetMaster A
和一個移動表tblMovement M
。 我想抽取所有資產及其當前位置,因此需要爲每個資產獲取最新的移動條目。返回關聯表的單個(有限)行的多個列
場
我已經看了各種連接,子查詢,得到的查詢和我對信息過載感到困惑。什麼是最有效(最簡單)的方式來檢索這些信息。
你可以使用的內部與由assetid
select A.AssetID, A.AssetName, M.MovementID, M.CurrentLocation, LocationUpdated
FROM tblAssetMaster A
INNER JOIN tblMovement M ON A.AssetID = M.AssetID
INNER JOIN (
select
M.AssetID
max(M.MovementID) my_mov_id
from tblMovement M
group by M.AssetID
) T ON T.AssetID = M.AssetID AND T.my_mov_id = M.MovementID
不應該是'T.my_mov_id'而不是'M.' ... – aSystemOverload
是......答案已更新。 – scaisEdge
工作正常,但在每個50K主資產記錄和5個移動記錄上,我看不到在這個和我自己的解決方案之間執行所需的時間差異。這也不被Views所喜歡(由於某些原因,在視圖中沒有子查詢)。我需要它在一個視圖(沒有注意到問題),所以我可以很容易地從Excel中抓住它。我將標記爲解決方案,一旦我爲每個資產添加了20多個移動,就可能會有更多評論。 – aSystemOverload
那麼它看起來像簡單的輪流把它寫下來,有助於解決它:
請讓我知道是否有一個更有效率(少工作的服務器)的方式來做到這一點。 – aSystemOverload
這與scaisEdge解決方案的速度類似,可用於視圖。 – aSystemOverload
更好地解釋添加分組最近MovementID加盟一個適當的數據樣本和預期的結果。 – scaisEdge
正如我寫的,我想要每個資產和他們的當前位置。然後,我包含了Movement表格字段,您可以看到它有一個CurrentLocation和LocationUpdated字段,所以我只需要將針對該表格返回的結果限制爲每個資產最近更新的條目。 – aSystemOverload