Как рекурсивно перебрать элементы таблицы и из их значения сформировать новую таблицу?
Есть таблица:
________________________
|id |value|timestamp |
________________________
| 0 | 3 |time and date |
________________________
| 1 | 40 |time and date |
Необходимо сформировать из нее новую, беря каждый id и выводя 1 и время +1сек value раз.
То есть, если значение value =3, тогда в выводимую таблицы добавить
_____________________
|1 |time and date+1 |
_____________________
|1 |time and date+2 |
_____________________
|1 |time and date+3 |
Так поступить со всеми элементами id и в результате сформировать одну таблицу.
Кодом это выглядело бы примерно так:
for($i=0;$i<max(id);$i++){
for ($y=0;$y<value[id];$y){
echo 1,"time and date"+$y
}
}
Как такое можно реализовать?
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
select id, timestamp + (generate_series || 's')::interval
from tablename cross join generate_series(1, ?)
where id = ?;
with s as(
select generate_series(1, ?) as s
)
select t.id, t.timestamp + (s.s || 's')::interval
from tablename t, s
where t.id = ?;
?column? | ?column?
----------+---------------------
1 | 2019-05-28 12:45:01
1 | 2019-05-28 12:45:02
1 | 2019-05-28 12:45:03
1 | 2019-05-28 12:45:04
1 | 2019-05-28 12:45:05
(5 rows)