Home > Software design >  How to formulate sql request for paths generaion?
How to formulate sql request for paths generaion?

Time:11-24

I have two tables.

Table_one

id name parent
1 brand 0
2 audi 1
3 q5 2
4 2011 3

Table_two

id path
1
2
3
4

How do I make a request so that the path to each value appears in the "path" column of the second table, taking into account all its parents via "/"?

If successful, the second table should look like this:

Table_two

id path
1 brand/
2 brand/audi
3 brand/audi/q5
4 brand/audi/Q5/2011

CodePudding user response:

MySQL 8.0 solves this with a recursive common table expression:

with recursive cte as (
 select id, name
 from table_one where parent = 0
 union all
 select table_one.id, concat_ws('/', cte.name, table_one.name)
 from table_one join cte on table_one.parent = cte.id
)
select * from cte;

If you use an older version of MySQL 5.x, then it's time to upgrade to MySQL 8.0.

  • Related