Re: reporting tree into separate columns - Mailing list pgsql-novice

From Ibrahim Shaame
Subject Re: reporting tree into separate columns
Date
Msg-id CAJOWwD78ii+PBVNBuDmkz=n-n6WDA4CN+_WLBQ7WcbzGPdWBrw@mail.gmail.com
Whole thread Raw
In response to Re: reporting tree into separate columns  (Didier Gasser-Morlay <didiergm@gmail.com>)
Responses Re: reporting tree into separate columns  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-novice
Thank you Didier for the response. But I can't see the solution there you propose would give me the same thing (jina). Remember that the column "jina" was obtained as a result of displaying a family tree. Now what I would like is break out this column into a number of columns depending on the depth.

Any suggestions?
Thanks
Ibrahim

On Sat, Nov 25, 2023 at 12:54 PM Didier Gasser-Morlay <didiergm@gmail.com> wrote:
I would try the following, if I understood correctly

1- define your query as a CTE (common table expression) call it family

2- in the select using this CTE, add 3 columns with a case as in 
select
case when depth = 0 then jina
else '' end as jina,
case when depth = 1 then jina
else '' end as jina_1,
case when depth = 2 then jina
else '' end as jina_2

from family 

Order by jina, depth

Just from the top of my head, the syntax could be wrong

Kind regards
Didier





On Sat, 25 Nov 2023 at 08:40, Ibrahim Shaame <ishaame@gmail.com> wrote:
I have the following query which gives me family tree

with recursive x (jina,namba,nasaba_1)

as (

select jina ||' '|| baba ||' '|| babu AS jina,namba, nasaba_1

from majina2

where nasaba_1 = 0

union all

select x.jina ||' '|| ' - '|| e.jina || ' ' || baba || ' ' || babu, e.namba, e.nasaba_1

from majina2 e, x

where e.nasaba_1 = x.namba

)

select jina,namba,nasaba_1,(length(jina)-length(replace(jina,'-','')))/length('-') AS depth

from x

order by 1;


And I get the following result:


jinanambaNasaba_1depth
Asia Khamis Haji 10000200
Asia Khamis Haji - Azida Makame Haji 1001281000021
Asia Khamis Haji - Ishak Makame Haji 1001271000021
Asia Khamis Haji - Ishak Makame Haji - Alia Ishak Makame 1002501001272
Asia Khamis Haji - Ishak Makame Haji - Ibrahim Ishak Makame 1002511001272
Asia Khamis Haji - Khamis Abdalla Ali 1001261000021
Asia Khamis Haji - Mwajuma Abdalla 1001251000021
Asia Khamis Haji - Namwira Abdalla Mosi 1001241000021


But what I want to get is to report the first column in different columns according to depth (last column)


Any suggestions


Thanks

Ibrahim Shaame

pgsql-novice by date:

Previous
From: Didier Gasser-Morlay
Date:
Subject: Re: reporting tree into separate columns
Next
From: "David G. Johnston"
Date:
Subject: Re: reporting tree into separate columns