SQL: возврат таблицы с ближайшим элементом и его соседом, если он связан с начальным элементом - PullRequest
0 голосов
/ 25 марта 2019

Я моделирую в Sparx EA как следующее изображение:

example

В моей документации я «начинаю» со Стереотипа 1, следовательно, # OBJECTID # - Object_ID Стереотипа 1Элемент.

Мне нужна таблица, подобная следующей:

Стереотип 2 Элемент 1 |-

Стереотип 2 Элемент 2 |Стереотип 3 Элемент 1

В тексте;В первом столбце должен быть указан весь связанный стереотип 2, и если имеется стереотип 3, связанный как со стереотипом 2, так и со «началом» (стереотип 1), во втором столбце должен быть стереотип 3.

Получение столбцаодно легко;

select distinct stereo1.ea_guid AS CLASSGUID, stereo1.Object_Type AS CLASSTYPE, stereo1.Name AS stereo1Name
from ((t_object stereo1
inner join t_connector start2stereo1Connector on start2stereo1Connector.End_Object_ID = stereo1.Object_ID AND stereo1.Stereotype = 'Stereotype 1')
inner join t_object start on start2stereo1Connector.Start_Object_ID = #OBJECTID#)

Но как мне добавить второй столбец?Я перепробовал много вещей, но не совсем понял.

Я бы предпочел SQL-решение, если это возможно, и избегая скриптов.

Это то, что мне удалось до сих пор:

select stereo2.ea_guid AS CLASSGUID, stereo2.Object_Type AS CLASSTYPE, stereo2.Name, stereo3.Name, stereo3.Note as stereo3Note
from ((((t_object stereo2
    INNER JOIN t_connector stereo1Con on stereo1Con.Start_Object_ID = #OBJECTID)
    INNER JOIN t_connector stereo3ConOut on stereo3ConOut.End_Object_ID = stereo1Con.End_Object_ID)
    INNER JOIN t_object stereo3 on stereo3.Object_ID = stereo3ConOut.Start_Object_ID)
    INNER JOIN t_connector stereo3ConIn on stereo3ConIn.Start_Object_ID = #OBJECTID# AND stereo3ConIn.End_Object_ID = stereo3.Object_ID)
WHERE stereo2.Object_ID = stereo1Con.End_Object_ID AND stereo2.Stereotype = 'Stereotype 2'

Это дает мне таблицу, которую я хочу, с одним исключением: элементы со Стереотипом 2, не связанные со Стереотипом 3, отсутствуют в таблице.Я попытался LEFT JOIN безуспешно.

Как включить ВСЕ элементы стереотипа 2, даже если они не имеют отношения к какому-либо стереотипу 3?

...