我试图在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