如何生成查询以获取具有通过 ProxyConnector 链接的其他对象的对象

How to build a query to get objects that have other objects linked via ProxyConnector

提问人:vascobnunes 提问时间:11/25/2020 更新时间:11/25/2020 访问量:44

问:

我需要一个查询来获取连接到 ADU1 的对象列表(如图所示)。在此列表中,我只需要对象的名称。我已经在这样做了。但是,如果存在 ProxyConnector(如图所示),我还需要列表包含跟踪连接器链接到的对象。

目标是此查询用于填充文档模板的片段。

有人有任何想法或提示吗?谢谢!

enter image description here

SQL 企业架构师

评论


答:

2赞 Geert Bellekens 11/25/2020 #1

快到了。正如你所注意到的,“trace”连接器将对象与一个不可见的对象连接起来,两者都设置为Phase1nameobject_typeProxyConnector

此 ProxyConnector 记录连接到字段 之间的关联。这与协会的相对应。ADU1Object 1Classifier_guidea_guid

因此,为了获得两者,您可以使用这样的查询Object 1Phase1

select o2.name
from t_object o 
inner join t_connector c on o.Object_ID in (c.Start_Object_ID, c.End_Object_ID)
inner join t_object prx on prx.Classifier_guid = c.ea_guid
inner join t_connector pc on prx.Object_ID in (pc.Start_Object_ID, pc.End_Object_ID)
left join t_object o2 on o2.Object_ID in  (pc.Start_Object_ID, pc.End_Object_ID)
                            and o2.Object_ID <> prx.Object_ID
where o.ea_guid = '{1CAC051A-142D-4430-9E9D-F323C38FE547}' --guid of ADU1
union
select o2.name
from t_object o 
inner join t_connector c on o.Object_ID in (c.Start_Object_ID, c.End_Object_ID)
inner join t_object o2 on o2.Object_ID in  (c.Start_Object_ID, c.End_Object_ID)
                            and o2.Object_ID <> o.Object_ID
where o.ea_guid = '{1CAC051A-142D-4430-9E9D-F323C38FE547}' --guid of ADU1

第一个查询将获取通过代理连接器连接的元素,第二个查询将获取以常规方式连接的元素。

此查询使用 SQL Server 语法。您可能需要添加一堆括号才能将其转换为 MS Access 语法(用于 .eap 和 .eapx 文件)

评论

0赞 vascobnunes 11/26/2020
这真的有很大帮助。谢谢!