我試圖在Access數據庫中管理我的應用程序的依賴關係,並且我可以使用SQL查詢的幫助來讓我返回每個組件的列表作爲單個結果。SQL查詢獲取所需的DLL的所有依賴關係
例如,假設我有一個附加列以下三個表未如下所示:
CurrentBuild Versions Dependencies
============== ============== =======================================
Item Version Item Version Item Version Dependency DepVersion
------ ------- ------ ------- ------ ------- ---------- ----------
MyExe 1.3 MyExe 1.0 MyExe 1.0 N/A N/A
MyDll1 1.0 MyExe 1.1 MyExe 1.1 N/A N/A
MyDll2 1.0 MyExe 1.2 MyExe 1.2 N/A N/A
MyDll3 1.1 MyExe 1.3 MyExe 1.3 N/A N/A
MyExe 1.4 MyDll1 1.0 MyDll4 1.0
MyDll1 1.0 MyDll2 1.0 SomeMsDll 1.0
MyDll2 1.0 MyDll3 1.0 MyDll4 1.0
MyDll2 1.1 MyDll3 1.0 MyDll5 1.0
MyDll3 1.0 MyDll3 1.1 MyDll4 1.0
MyDll3 1.1 MyDll4 1.0 MyDll6 1.0
MyDll4 1.0 MyDll5 1.0 MyDll6 1.0
MyDll5 1.0 MyDll6 1.0 MyDll7 1.0
MyDll6 1.0 MyDll7 1.0 MyDll8 1.0
MyDll7 1.0
我可以使用哪些查詢來獲取從CurrentBuild表下面的結果呢?我寧願對VBA宏進行簡單的查詢;然而,如果不能用查詢完成,我並不反對VBA宏。
Item Version
----------- -------
MyExe 1.3
MyDll1 1.0
MyDll2 1.0
MyDll3 1.1
MyDll4 1.0
MyDll6 1.0
MyDll7 1.0
MyDll8 1.0
SomeMsDll 1.0
到目前爲止,我有以下,但這並不能給我想要的結果;它只是給我回CurrentBuild表的內容:
SELECT W.Item, W.Version
FROM (SELECT DISTINCT V.[Item], V.[Version]
FROM ([Versions] AS V
INNER JOIN [Dependencies] AS D ON V.[Item] = D.[Dependency] AND V.[Version] = D.[DepVersion])
INNER JOIN [CurrentBuild] AS S ON D.[Item] = S.[Item] AND D.[Version] = S.[Version]
UNION
SELECT DISTINCT V.[Item], V.[Item]
FROM [Versions] AS V
INNER JOIN [CurrentBuild] AS S ON V.[Item] = S.[Item] AND V.[Version] = S.[Version]) AS W;
如果你很好奇,爲什麼MyExe沒有對MyDlls依賴關係,簡單的答案是,它並不需要回答關於這個問題我查詢;但是,僅供參考,這些DLL是動態加載的,所以MyExe對MyDll沒有構建時間依賴性。
謝謝。
否決一個問題,當這將有助於提供一個評論。這個問題以什麼方式不顯示任何研究工作,是不明確的還是沒有用的?謝謝。 – jia103 2014-10-27 18:41:05