· 8 years ago · Mar 29, 2018, 11:58 AM
1CREATE TEMPORARY TABLE IF NOT EXISTS
2t1
3ENGINE=MyISAM
4AS (
5 SELECT
6 n AS nr
7 , SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT TRIM(LEADING '/' FROM '/426/427/428')), '/', tmp.n), '/', -1) AS catid
8 , (
9 SELECT name FROM category
10 WHERE category.id = catid
11 ) AS name
12 , (
13 SELECT path FROM category
14 WHERE category.id = catid
15 ) AS path
16 FROM
17 (SELECT @rownum := @rownum + 1 AS n, category.id, category.name, category.path
18 FROM category
19 CROSS JOIN (SELECT @rownum := 0) r
20 ) AS tmp
21 GROUP BY catid
22 ORDER BY
23 n
24
25);
26
27/* SELECT * FROM t1; */
28SELECT group_concat(name, '/') as path_long FROM t1;
29DROP TEMPORARY TABLE t1;
30
31path_long
32/Computers/Other accessories/Laser printers
33
34path
35/426/427/428
36/1/2/3
37/4/5/6
38/7/8/9
39
40path_long
41/Computers/Other accessories/Laser printers
42/A/B/C
43/D/E/F
44/G/H/I