|
1 | | - |
2 | | --- SELECT levels |
3 | | --- , PersonId |
4 | | --- , Friends |
5 | | --- FROM (SELECT Person1.personId AS PersonId |
6 | | --- , STRING_AGG(Person2.personId, ';') WITHIN GROUP (GRAPH PATH) AS Friends |
7 | | --- , LAST_VALUE(Person2.personId) WITHIN GROUP (GRAPH PATH) AS LastNode |
8 | | --- , COUNT(Person2.personId) WITHIN GROUP (GRAPH PATH) AS levels |
9 | | --- FROM Person AS Person1 |
10 | | --- , Person_knows_Person FOR PATH AS fo |
11 | | --- , Person FOR PATH AS Person2 |
12 | | --- WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2)+)) |
13 | | --- AND Person1.personId = :person1Id |
14 | | --- ) AS Q |
15 | | --- WHERE Q.LastNode = :person2Id |
16 | | - |
17 | | -DECLARE @trustedPaths as table |
18 | | -( |
19 | | - Id bigint, |
20 | | - OrderDiscovered int, |
21 | | - Path varchar(MAX) |
22 | | -) |
23 | | - |
24 | | -INSERT INTO @trustedPaths |
25 | | -EXEC dbo.knows_Breadth_First :person1Id, :person2Id; |
26 | | - |
27 | | -SELECT TOP(1) OrderDiscovered, Id, Path |
28 | | - FROM @trustedPaths |
29 | | - ORDER BY OrderDiscovered ASC; |
| 1 | +SELECT levels |
| 2 | + , PersonId |
| 3 | + , Friends |
| 4 | + FROM (SELECT Person1.personId AS PersonId |
| 5 | + , STRING_AGG(Person2.personId, ';') WITHIN GROUP (GRAPH PATH) AS Friends |
| 6 | + , LAST_VALUE(Person2.personId) WITHIN GROUP (GRAPH PATH) AS LastNode |
| 7 | + , COUNT(Person2.personId) WITHIN GROUP (GRAPH PATH) AS levels |
| 8 | + FROM Person AS Person1 |
| 9 | + , Person_knows_Person FOR PATH AS fo |
| 10 | + , Person FOR PATH AS Person2 |
| 11 | + WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2)+)) |
| 12 | + AND Person1.personId = :person1Id |
| 13 | + ) AS Q |
| 14 | + WHERE Q.LastNode = :person2Id |
0 commit comments