Complex Recursive Query

Поиск
Список
Период
Сортировка
От Jim Garrison
Тема Complex Recursive Query
Дата
Msg-id 7a401e3043514d939af12f911a9511dc@BN1PR06MB839.namprd06.prod.outlook.com
обсуждение исходный текст
Ответы Re: Complex Recursive Query
Re: Complex Recursive Query
Список pgsql-general
I have a collection of relationship rows of the form

Table: graph
    key1 varchar
    key2 varchar

A row of the form ('a','b') indicates that 'a' and 'b' are related.
The table contains many relationships between keys, forming several
disjoint sets. All relationships are bi-directional, and both
directions are present.  I.e. the table contains a set of disjoint
graphs specified as node pairs.

For example the set of values

    key1    key2
    -----   -----
      a       x
      a       y
      b       w
      c       t
      x       a
      y       a
      y       z
      z       y
      t       c
      w       b
      w       d
      d       w

defines three disjoint groups of connected keys:

      a x y z
      c t
      b w d

What I would like to achieve is a single SQL query that returns

      group key
      ----- ---
        1    a
        1    x
        1    y
        1    z
        2    c
        2    t
        3    b
        3    w
        3    d

I don't care about preserving the node-to-node relationships, only
the group membership for each node.

I've been playing with "WITH RECURSIVE" CTEs but haven't had any
success.  I'm not really sure how to express what I want in SQL, and
it's not completely clear to me that recursive CTEs will help here.
Also I'm not sure how to generate the sequence numbers for the groups


В списке pgsql-general по дате отправления:

Предыдущее
От: Seamus Abshere
Дата:
Сообщение: Re: Re: Why is unique constraint needed for upsert? (treat atomicity as optional)
Следующее
От: John R Pierce
Дата:
Сообщение: Re: Re: Why is unique constraint needed for upsert? (treat atomicity as optional)