From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Ibrahim Shaame <ishaame(at)gmail(dot)com> |
Cc: | swastik Gurung <gurung_swastik(at)yahoo(dot)com>, "pgsql-novice(at)lists(dot)postgresql(dot)org" <pgsql-novice(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Reporting by family tree |
Date: | 2023-10-05 15:02:43 |
Message-ID: | CAKFQuwaMRJUpMz8Usd3XHfymgdR=51G-CjOpi16nxWh+kytD0Q@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
On Thu, Oct 5, 2023 at 7:54 AM Ibrahim Shaame <ishaame(at)gmail(dot)com> wrote:
> WITH RECURSIVE ukoo AS (
> SELECT namba,
> jina,
> baba,
> babu,
> nasaba_1,
> daraja
> FROM majina2
> WHERE majina2.nasaba_1 IN (SELECT DISTINCT namba FROM majina2)
>
> UNION ALL
>
> SELECT mtoto.namba,
> mtoto.jina,
> mtoto.baba,
> mtoto.babu,
> mtoto.nasaba_1,
> daraja
> FROM majina2 mtoto
> WHERE mtoto.nasaba_1 NOT IN (SELECT DISTINCT namba FROM majina2)
>
>
The reason it is called a "recursive" CTE is that the subquery following
the union all is recursive in nature - i.e., it should refer to itself.
You named the CTE ukoo but you never actually refer to ukoo in the
recursive subquery. Thus, you have not written a recursive query.
When you reference the recursive "table" in the subquery its contents
contain the results of the previous iteration, that is what allows you to
select a child record and then consider that record a parent when finding
the next depth/layer of children.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | jinser | 2023-10-07 13:01:59 | Is `DATE` a function? |
Previous Message | Ibrahim Shaame | 2023-10-05 14:48:56 | Re: Reporting by family tree |