Grafy, drzewa i hierarchie w SQL
Czy zastanawiałeś się jak napisać zapytanie w SQL aby odnaleźć drogę z punktu A-Z? W artykule znajdziesz opis struktur grafów, drzew i hierarchii w SQL. Scenariusze wraz z gotowymi rozwiązaniami, bazujące na grafach prostych, cyklicznych, skierowanych.
juris z- #
- #
- 8
Komentarze (8)
najlepsze
Można by użyć jakichś wbudowanych w bazę typów tablicowych (postgres). Obstawiam, że ich wydajność byłaby wyższa.
np.
WITH RECURSIVE searchgraph(id, link, data, depth, path, cycle) AS (
SELECT g.id, g.link, g.data, 1,
ARRAY[g.id],
false
FROM graph g
UNION ALL
SELECT g.id, g.link, g.data, sg.depth + 1,
path || g.id,
g.id = ANY(path)
FROM graph g, searchgraph sg
WHERE g.id = sg.link AND NOT cycle
)
SELECT * FROM search_graph;
http://www.postgresql.org/docs/8.4/static/queries-with.html