@ Другие читатели:
См. Первый ответ, опубликованный Марком Байерсом первым. Я использовал «отвечать», а не «комментировать» его пост, так как мне нужно было использовать таблицы / ссылки и т. Д., Которые недоступны при комментировании ответов. :)
@ Марк Байерс:
Спасибо за ссылку ... Это действительно помогло мне, и я смог выяснить способ создания пути между серверами ... Посмотрите, что я смог сделать.
in_id | in_timestamp | out_timestmap | name | hops_count | path |
id1 | timestamp1 | timestamp2 | data1 | 1 | {id1} |
id2 | timestamp2 | timestamp3 | data1 | 2 | {id1,id2} |
id3 | timestamp3 | timestamp4 | data1 | 3 | {id1,id2,id3} |
id4 | timestamp4 | timestamp2 | data1 | 4 | {id1,id2,id3,id4} |
* путь генерируется с использованием 'in_id'
Я использовал следующий запрос ...
WITH RECURSIVE foo AS
(
SELECT t_alias1, 1 AS hops_count, ARRAY[in_id] AS hops
FROM log_parsing.log_of_sent_mails t_alias1
WHERE in_server = 'other-server1'
UNION ALL
SELECT t_alias2, foo.hops_count + 1 AS hops_count, hops || in_id
FROM foo
JOIN log_parsing.log_of_sent_mails t_alias2
ON t_alias2.in_id = (foo.t_alias1).out_id
)
SELECT (foo.t_alias1).in_id,
(foo.t_alias1).name,
(foo.t_alias1).in_timestamp,
hops_count,
hops::VARCHAR AS path
FROM foo ORDER BY hops
Но я еще не смог достичь конечной стадии. Вот что я хочу получить в конечном итоге ...
in_id | in_timestamp | out_timestmap | name | hops_count | path |
id4 | timestamp1 | timestamp5 | data1 | 4 | {id1,id2,id3,id4}|
* соблюдайте отметку времени. Это необходимо, так как я не хочу, чтобы клиент знал о внутренней инфраструктуре. Поэтому для него важен временной интервал между отметкой времени1 и отметкой времени5.
Любая подсказка, как, возможно, я мог бы достичь этого !?
p.s. Я бы тоже попытался связаться с Quassnoi . :)