LINUX.ORG.RU

Помогите пожалуйста с SQL запросом. (PostgreSQL 9)

 ,


0

1

Есть такая таблица

 ID C_ID  col
 1 |null| red
 2 |null| blue
 3 |  1 | green
 4 |  2 | red
 5 |  3 | green
 6 |  4 | blue
 7 |  5 | red
 8 |  6 | green
 9 |  7 | blue
10 |  8 | red

Выбираем случайным образом число от 1 до 10, и для этого числа мне нужно сделать следующий sql запрос:

например если число 7 то результат запроса должен быть следующий

 7 |  5 | red
 5 |  3 | green
 3 |  1 | green
 1 |null| red

если 10 то

10 |  8 | red
 8 |  6 | green
 6 |  4 | blue
 4 |  2 | red
 2 |null| blue
если 1 то
 1 |null| red

Выбрав первую строку смотрим значение поля C_ID, если оно не null то добавляем строку где id равен C_ID и т.д. пока C_ID не будет равен null

Подскажите пожалуйста пример подобного запроса, уже по разному пытался написать, но ничего не выходит.

Заранее спасибо!

WITH RECURSIVE chain AS (
  SELECT id, cid, color
  FROM colors
  WHERE id = 7
  UNION ALL
  SELECT colors.id, colors.cid, colors.color
  FROM chain
  INNER JOIN colors ON colors.id = chain.cid
)

SELECT * FROM chain
Apple-ch ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.