Skip to content

Commit b41acc7

Browse files
authored
Create recursive.sql
1 parent 59734ef commit b41acc7

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

pgexercises/recursive.sql

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
with recursive recommenders(recommender) as (
2+
select recommendedby from cd.members where memid = 27
3+
union all
4+
select mems.recommendedby
5+
from recommenders recs
6+
inner join cd.members mems
7+
on mems.memid = recs.recommender
8+
)
9+
select recs.recommender, mems.firstname, mems.surname
10+
from recommenders recs
11+
inner join cd.members mems
12+
on recs.recommender = mems.memid
13+
order by memid desc
14+
15+
16+
17+
with recursive recommendeds(memid) as (
18+
select memid from cd.members where recommendedby = 1
19+
union all
20+
select mems.memid
21+
from recommendeds recs
22+
inner join cd.members mems
23+
on mems.recommendedby = recs.memid
24+
)
25+
select recs.memid, mems.firstname, mems.surname
26+
from recommendeds recs
27+
inner join cd.members mems
28+
on recs.memid = mems.memid
29+
order by memid
30+
31+
32+
33+
with recursive recommenders(recommender, member) as (
34+
select recommendedby, memid
35+
from cd.members
36+
union all
37+
select mems.recommendedby, recs.member
38+
from recommenders recs
39+
inner join cd.members mems
40+
on mems.memid = recs.recommender
41+
)
42+
select recs.member member, recs.recommender, mems.firstname, mems.surname
43+
from recommenders recs
44+
inner join cd.members mems
45+
on recs.recommender = mems.memid
46+
where recs.member = 22 or recs.member = 12
47+
order by recs.member asc, recs.recommender desc

0 commit comments

Comments
 (0)