График кратчайшего пути .. использовать только помеченные края? - PullRequest
0 голосов
/ 29 мая 2020

В новой версии SQL Сервера есть функция SHORTEST_PATH. Я использую атрибуты (или метки) в граничных таблицах, чтобы различать guish различные типы соединений.

К сожалению, функция SHORTEST_PATH, похоже, не допускает никаких атрибутов в условии where ( если таблицы помечены для пути)

SELECT
       l1.CommonName AS CommonName, 
       STRING_AGG(l2.CommonName, '->') WITHIN GROUP (GRAPH PATH) AS Verbindung,
       LAST_VALUE(l2.CommonName) WITHIN GROUP (GRAPH PATH) AS LastNode
 from           object as l1, 
                connections for path as v,
                object for path as  l2 
    where match(SHORTEST_PATH( l1  (-(v)-> l2)+))
    and l1.CommonName = 'jagdtWurst'
    and v.label= 'hierarchie' <<--- This is not possible .... Error

В любом случае нет никакого трюка, как это сделать?

1 Ответ

1 голос
/ 30 мая 2020

Похоже, вы можете использовать подзапрос в предложении from. например,

SELECT
       l1.CommonName AS CommonName, 
       STRING_AGG(l2.CommonName, '->') WITHIN GROUP (GRAPH PATH) AS Verbindung,
       LAST_VALUE(l2.CommonName) WITHIN GROUP (GRAPH PATH) AS LastNode
 from           object as l1, 
                (select * from connections where label = 'hierarchie') for path as v,
                object for path as  l2 
    where match(SHORTEST_PATH( l1  (-(v)-> l2)+))
    and l1.CommonName = 'jagdtWurst'
...