Quantcast
Viewing all articles
Browse latest Browse all 207

I would want, through recursive CTEs, a query to return all cars at tree-shaped, but sorted in each category

Here is both table and data for testing:

CREATE TABLE if not exists cars (    id serial PRIMARY KEY,     parent_code INT,    descr CHARACTER VARYING(50) NOT NULL);-- Level 1INSERT INTO cars(parent_code, descr) VALUES (null, 'Volkswagen');INSERT INTO cars(parent_code, descr) VALUES (null, 'Tesla');-- Level 2INSERT INTO cars(parent_code, descr) VALUES (1, 'Polo');INSERT INTO cars(parent_code, descr) VALUES (1, 'Golf');INSERT INTO cars(parent_code, descr) VALUES (2, '3');INSERT INTO cars(parent_code, descr) VALUES (2, 'S');INSERT INTO cars(parent_code, descr) VALUES (2, 'X');-- Level 3INSERT INTO cars(parent_code, descr) VALUES (3, 'diesel');INSERT INTO cars(parent_code, descr) VALUES (3, 'gasoline');INSERT INTO cars(parent_code, descr) VALUES (4, 'diesel');INSERT INTO cars(parent_code, descr) VALUES (4, 'gasoline');INSERT INTO cars(parent_code, descr) VALUES (5, 'electric');INSERT INTO cars(parent_code, descr) VALUES (6, 'electric');INSERT INTO cars(parent_code, descr) VALUES (7, 'electric');

And here is the view (which I tried) with a recursive CTE:

WITH RECURSIVE tree_cars AS (  select descr  from cars  union all  select concat('  -> ', descr)  from cars)--table tree_cars;select * from tree_cars;

But the output is not what I expect:

VolkswagenTeslaPoloGolf3SXdieselgasolinedieselgasolineelectricelectricelectric  -> Volkswagen  -> Tesla  -> Polo  -> Golf  -> 3  -> S  -> X  -> diesel  -> gasoline  -> diesel  -> gasoline  -> electric  -> electric  -> electric

Since I would want something like:

Tesla  -> 3      -> electric  -> S      -> electric  -> X      -> electricVolkswagen  -> Golf      -> diesel      -> gasoline  -> Polo      -> diesel      -> gasoline

Viewing all articles
Browse latest Browse all 207

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>