Конференция "Базы" » как избавиться от with recursive [postgresql]
 
  • stas © (12.10.16 19:14) [20]
    kate158, прочитайте внимательно stas ©   (11.10.16 15:19) [5]
  • iop © (12.10.16 19:21) [21]
    стасик, зачем ей читать твоё пять,
    если тебе русским языком написали,
    что дерево кривое, и рекурсивный запрос на ихней иерархии зацикливается.

    вот тем и не устраивает.
  • stas © (13.10.16 08:57) [22]
    iop ©   (12.10.16 19:21) [21]
    Тоже верно. Точнее stas ©   (11.10.16 15:22) [6].
    Можно конечно в цикле поставить максимальный уровень вложенности, допустим 100.
    Но это закопать проблему еще глубже.

    iop ©   (12.10.16 17:49) [18]
    Есть еще вариант:
    id=1, parentId=3
    id=2, parentId=1
    id = 3 parentId=2
  • kate158 © (13.10.16 11:14) [23]

    > iop ©   (12.10.16 19:21) [21]

    чем дерево кривое? на хабре полно статей про такую структуру дерева, где parent_id=id
    id=1 parent_id=пусто
    id=2 parent_id=1
    id=3 parent_id=1
    id=4 parent_id=2
    id=5 parent_id=2
    сейчас ничего не зацикливается, но в случае логической ошибки может. так сказали наши программисты. я с этим не сталкивалась, не знаю. но мой запрос завернули :)
  • stas © (13.10.16 11:27) [24]
    kate158 ©   (13.10.16 11:14) [23]
    А не проще сделать check на логическую ошибку при записи?
  • iop © (13.10.16 11:28) [25]
    чем дерево кривое? на хабре полно статей про такую структуру дерева, где parent_id=id

    корнет, вы женщина?
  • stas © (13.10.16 11:31) [26]
    kate158 ©
    Вы наверное все таки напишите запрос, чтобы понять как работает рекурсивное дерево.
  • kate158 © (13.10.16 11:36) [27]
    iop ©   (13.10.16 11:28) [25] я в этом не виновата :)
  • kate158 © (14.10.16 16:07) [28]

    > stas ©   (13.10.16 11:31) [26]

    stas ©   (13.10.16 11:31) [26]
    with t as(
    SELECT id, parent_id, name
    FROM accounts.groups b WHERE id='7e8a97b0-7353-11e6-84f9-2314e71f8a19'
    union all
     select  a.id, a.parent_id, a.name
    from accounts.groups as a
    inner join b on b.parent_id = a.id)
    select * from t



    ?
  • stas © (14.10.16 21:28) [29]
    kate158 ©   (14.10.16 16:07) [28]
    Имел ввиду, доделайте тот,что начали ).
 
Конференция "Базы" » как избавиться от with recursive [postgresql]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]