Создайте иерархию дерева категорий, используя PostgreSQL - PullRequest
0 голосов
/ 04 апреля 2020

Как сделать иерархическое дерево уровня категории из данных Magento. Это пример данных категории, первый столбец «Cat_id» будет уникальным, и если Cat_id будет таким же, как lvl_1, lvl_2, lvl_3, то он будет супер-родителем ie lvl 1.

Если cat_id отличается для lvl_1 и одинаково для lvl 2, lvl 3, тогда это будет lvl 2.

(при использовании PostgreSQL версия 11).

Так что я хочу что-то подобное ниже и перепробовал много вещей, но не смог получить этот вывод, было бы очень полезно, если бы кто-то мог мне помочь в этом.

Или любой другой способ, которым мы можем показать эта иерархия

**Expected Output:**
Cat_id      Cat Tree     
 "1111"      "1111" - lvl 1
  "1113"        "1113" - lvl2
  "1119"           "1119" - lvl 3
  "1120"            "1120"
  "1121"           "1121"
  "1181"        "1181"    -lvl 2
  "1183"           "1183"  -lvl 3
 "1182"             "1182"

Пример данных:

Cat_id.  lvl_1   lvl_2. lvl_3
1111    "1111"  "1111"  "1111"
1113    "1111"  "1113"  "1113"
1119    "1111"  "1113"  "1119"
1120    "1111"  "1113"  "1120"
1121    "1111"  "1113"  "1121"
1122    "1111"  "1113"  "1122"
1188    "1111"  "1113"  "1188"
1181    "1111"  "1181"  "1181"
1183    "1111"  "1181"  "1183"
1182    "1111"  "1182"  "1182"
1184    "1111"  "1182"  "1184"
2479    "1111"  "2479"  "2479"
2482    "1111"  "2482"  "2482"
2493    "1111"  "2493"  "2493"
2499    "1111"  "2499"  "2499"
2500    "1111"  "2500"  "2500"
2501    "1111"  "2501"  "2501"
2509    "1111"  "2509"  "2509"
2511    "1111"  "2511"  "2511"
2512    "1111"  "2512"  "2512"
2513    "1111"  "2513"  "2513"
2514    "1111"  "2513"  "2514"
2515    "1111"  "2515"  "2515"
2516    "1111"  "2515"  "2516"
2518    "1111"  "2515"  "2518"
2519    "1111"  "2515"  "2519"
2517    "1111"  "2517"  "2517"
2520    "1111"  "2520"  "2520"
2521    "1111"  "2520"  "2521"
2522    "1111"  "2520"  "2522"
2523    "1111"  "2523"  "2523"
2524    "1111"  "2524"  "2524"
2498    "1111"  "2525"  "2498"
2502    "1111"  "2525"  "2502"
2503    "1111"  "2525"  "2503"
2504    "1111"  "2525"  "2504"
2505    "1111"  "2525"  "2505"
2506    "1111"  "2525"  "2506"
2507    "1111"  "2525"  "2507"
2508    "1111"  "2525"  "2508"
2525    "1111"  "2525"  "2525"
2526    "1111"  "2525"  "2526"
2527    "1111"  "2527"  "2527"
2528    "1111"  "2528"  "2528"
2531    "1111"  "2531"  "2531"
2532    "1111"  "2532"  "2532"
2538    "1111"  "2538"  "2538"
2539    "1111"  "2539"  "2539"
2540    "1111"  "2540"  "2540"
2590    "1111"  "2540"  "2590"
2591    "1111"  "2540"  "2591"
2543    "1111"  "2543"  "2543"
2545    "1111"  "2545"  "2545"
2638    "1111"  "2545"  "2638"
2639    "1111"  "2545"  "2639"
2649    "1111"  "2545"  "2649"
2650    "1111"  "2545"  "2650"
2546    "1111"  "2546"  "2546"
2547    "1111"  "2547"  "2547"
2548    "1111"  "2548"  "2548"
2549    "1111"  "2549"  "2549"
2550    "1111"  "2550"  "2550"
2551    "1111"  "2551"  "2551"
2604    "1111"  "2551"  "2604"
2552    "1111"  "2552"  "2552"
2553    "1111"  "2552"  "2553"
2554    "1111"  "2552"  "2554"
2555    "1111"  "2552"  "2555"
2556    "1111"  "2556"  "2556"
2557    "1111"  "2557"  "2557"
2558    "1111"  "2557"  "2558"
2559    "1111"  "2557"  "2559"
2560    "1111"  "2557"  "2560"
2562    "1111"  "2557"  "2562"
2568    "1111"  "2568"  "2568"
2537    "1111"  "2569"  "2537"
2544    "1111"  "2569"  "2544"
2569    "1111"  "2569"  "2569"
2570    "1111"  "2569"  "2570"
2571    "1111"  "2569"  "2571"
2572    "1111"  "2569"  "2572"
2573    "1111"  "2573"  "2573"
2574    "1111"  "2574"  "2574"
2575    "1111"  "2575"  "2575"
2576    "1111"  "2576"  "2576"
2578    "1111"  "2578"  "2578"
2579    "1111"  "2579"  "2579"
2580    "1111"  "2580"  "2580"
2581    "1111"  "2581"  "2581"
2582    "1111"  "2582"  "2582"
2583    "1111"  "2583"  "2583"
2584    "1111"  "2584"  "2584"
2585    "1111"  "2584"  "2585"
2586    "1111"  "2584"  "2586"
2587    "1111"  "2584"  "2587"
2588    "1111"  "2584"  "2588"
2589    "1111"  "2589"  "2589"
2592    "1111"  "2592"  "2592"
2593    "1111"  "2593"  "2593"
2651    "1111"  "2593"  "2651"
2598    "1111"  "2598"  "2598"
2600    "1111"  "2600"  "2600"
2601    "1111"  "2601"  "2601"
2602    "1111"  "2602"  "2602"
2603    "1111"  "2603"  "2603"
2644    "1111"  "2644"  "2644"
2645    "1111"  "2645"  "2645"
2646    "1111"  "2646"  "2646"
2647    "1111"  "2647"  "2647"
2648    "1111"  "2648"  "2648"
3310    "1111"  "3310"  "3310"
3321    "1111"  "3321"  "3321"
3322    "1111"  "3322"  "3322"
3323    "1111"  "3323"  "3323"
3324    "1111"  "3324"  "3324"
3829    "1111"  "3829"  "3829"
3878    "1111"  "3878"  "3878"
3879    "1111"  "3878"  "3879"
3320    "1111"  "3880"  "3320"
3325    "1111"  "3880"  "3325"
3326    "1111"  "3880"  "3326"
3327    "1111"  "3880"  "3327"
3596    "1111"  "3880"  "3596"
3598    "1111"  "3880"  "3598"
3880    "1111"  "3880"  "3880"
2143    "2143"  "2143"  "2143"
2145    "2143"  "2145"  "2145"
2153    "2143"  "2145"  "2153"
2963    "2143"  "2145"  "2153"
2158    "2143"  "2145"  "2158"
2193    "2143"  "2145"  "2158"
2195    "2143"  "2145"  "2158"
2197    "2143"  "2145"  "2158"
2198    "2143"  "2145"  "2158"
2201    "2143"  "2145"  "2158"
2159    "2143"  "2145"  "2159"
2160    "2143"  "2145"  "2160"
2298    "2143"  "2145"  "2298"
2303    "2143"  "2145"  "2298"
2300    "2143"  "2145"  "2300"
2878    "2143"  "2145"  "2903"
2879    "2143"  "2145"  "2903"
2881    "2143"  "2145"  "2903"
2903    "2143"  "2145"  "2903"
2929    "2143"  "2145"  "2903"
2993    "2143"  "2145"  "2993"
3626    "2143"  "2145"  "3626"
2146    "2143"  "2146"  "2146"
2168    "2143"  "2146"  "2168"
2259    "2143"  "2146"  "2168"
2261    "2143"  "2146"  "2168"
2262    "2143"  "2146"  "2168"
2264    "2143"  "2146"  "2168"
2265    "2143"  "2146"  "2168"
2267    "2143"  "2146"  "2168"
2268    "2143"  "2146"  "2168"
2269    "2143"  "2146"  "2168"
2742    "2143"  "2146"  "2168"
2959    "2143"  "2146"  "2168"
3015    "2143"  "2146"  "2168"
2169    "2143"  "2146"  "2169"
2271    "2143"  "2146"  "2169"
2277    "2143"  "2146"  "2169"
2278    "2143"  "2146"  "2169"
2841    "2143"  "2146"  "2169"
2173    "2143"  "2146"  "2173"
2204    "2143"  "2204"  "2204"
2055    "2143"  "2227"  "2055"
2056    "2143"  "2227"  "2055"
2057    "2143"  "2227"  "2055"
2058    "2143"  "2227"  "2055"
2059    "2143"  "2227"  "2055"
2060    "2143"  "2227"  "2055"
2918    "2143"  "2227"  "2055"
3488    "2143"  "2227"  "2055"
2148    "2143"  "2227"  "2148"
2445    "2143"  "2227"  "2148"
3794    "2143"  "2227"  "2148"
3795    "2143"  "2227"  "2148"
3796    "2143"  "2227"  "2148"
2186    "2143"  "2227"  "2186"
2187    "2143"  "2227"  "2186"
2188    "2143"  "2227"  "2186"
2190    "2143"  "2227"  "2186"
2191    "2143"  "2227"  "2186"
2192    "2143"  "2227"  "2186"
2196    "2143"  "2227"  "2186"
2994    "2143"  "2227"  "2186"
2208    "2143"  "2227"  "2208"
2209    "2143"  "2227"  "2208"
2212    "2143"  "2227"  "2208"
2213    "2143"  "2227"  "2208"
2215    "2143"  "2227"  "2208"
2216    "2143"  "2227"  "2216"
3007    "2143"  "2227"  "2216"
3008    "2143"  "2227"  "2216"
3854    "2143"  "2227"  "2216"
2227    "2143"  "2227"  "2227"
3002    "2143"  "2227"  "3002"
3639    "2143"  "2227"  "3002"
3605    "2143"  "2227"  "3605"
3609    "2143"  "2227"  "3609"
3616    "2143"  "2227"  "3616"
3640    "2143"  "2227"  "3616"
3642    "2143"  "2227"  "3616"
3617    "2143"  "2227"  "3617"
3627    "2143"  "2227"  "3627"
3628    "2143"  "2227"  "3628"
3629    "2143"  "2227"  "3629"
3630    "2143"  "2227"  "3630"
3809    "2143"  "2227"  "3809"
2231    "2143"  "2231"  "2231"
2236    "2143"  "2231"  "2236"
2237    "2143"  "2231"  "2237"
2239    "2143"  "2231"  "2239"
2247    "2143"  "2231"  "2247"
2248    "2143"  "2231"  "2248"
2250    "2143"  "2231"  "2250"
2251    "2143"  "2231"  "2251"
2253    "2143"  "2231"  "2253"
2256    "2143"  "2231"  "2256"
2257    "2143"  "2231"  "2257"
2772    "2143"  "2231"  "2772"
2773    "2143"  "2231"  "2772"
2774    "2143"  "2231"  "2772"
3619    "2143"  "2231"  "3619"
3620    "2143"  "2231"  "3620"
2296    "2143"  "2296"  "2296"
2297    "2143"  "2296"  "2297"
2306    "2143"  "2296"  "2297"
2307    "2143"  "2296"  "2297"
2308    "2143"  "2296"  "2297"
2301    "2143"  "2296"  "2301"
2309    "2143"  "2296"  "2301"
2310    "2143"  "2296"  "2301"
2302    "2143"  "2296"  "2302"
2324    "2143"  "2296"  "2302"
2325    "2143"  "2296"  "2302"
2326    "2143"  "2296"  "2302"
2304    "2143"  "2296"  "2304"
3038    "2143"  "3038"  "3038"
3039    "2143"  "3038"  "3039"
3040    "2143"  "3038"  "3040"
3041    "2143"  "3038"  "3041"
3665    "2143"  "3038"  "3041"
3635    "2143"  "3038"  "3635"
3636    "2143"  "3038"  "3636"
3637    "2143"  "3038"  "3637"
3856    "2143"  "3038"  "3856"
3857    "2143"  "3038"  "3857"
3311    "2143"  "3311"  "3311"
3312    "2143"  "3312"  "3312"
1019    "2143"  "3313"  "2734"
2734    "2143"  "3313"  "2734"
3043    "2143"  "3313"  "2734"
3047    "2143"  "3313"  "2734"
3313    "2143"  "3313"  "3313"
3666    "2143"  "3313"  "3666"
3334    "2143"  "3335"  "3334"
3335    "2143"  "3335"  "3335"
2150    "2143"  "3597"  "2150"
2155    "2143"  "3597"  "2150"
2157    "2143"  "3597"  "2150"
2163    "2143"  "3597"  "2150"
2164    "2143"  "3597"  "2150"
2171    "2143"  "3597"  "2150"
2172    "2143"  "3597"  "2150"
2420    "2143"  "3597"  "2150"
3647    "2143"  "3597"  "2150"
2151    "2143"  "3597"  "2151"
2174    "2143"  "3597"  "2151"
2178    "2143"  "3597"  "2151"
2870    "2143"  "3597"  "2151"
2871    "2143"  "3597"  "2151"
2154    "2143"  "3597"  "2154"
2161    "2143"  "3597"  "2161"
2203    "2143"  "3597"  "2161"
2205    "2143"  "3597"  "2161"
2206    "2143"  "3597"  "2161"
2207    "2143"  "3597"  "2161"
2210    "2143"  "3597"  "2161"
2211    "2143"  "3597"  "2161"
2218    "2143"  "3597"  "2161"
2229    "2143"  "3597"  "2161"
2998    "2143"  "3597"  "2161"
2176    "2143"  "3597"  "2176"
2152    "2143"  "3597"  "3594"
2156    "2143"  "3597"  "3594"
2166    "2143"  "3597"  "3594"
2167    "2143"  "3597"  "3594"
2182    "2143"  "3597"  "3594"
2185    "2143"  "3597"  "3594"
2252    "2143"  "3597"  "3594"
2255    "2143"  "3597"  "3594"
2880    "2143"  "3597"  "3594"
3594    "2143"  "3597"  "3594"
3597    "2143"  "3597"  "3597"
3599    "2143"  "3597"  "3599"
3600    "2143"  "3597"  "3600"
3601    "2143"  "3597"  "3601"
3631    "2143"  "3597"  "3631"
3632    "2143"  "3597"  "3632"
3634    "2143"  "3597"  "3634"
3643    "2143"  "3597"  "3643"
3644    "2143"  "3597"  "3644"
3656    "2143"  "3597"  "3656"
3618    "2143"  "3618"  "3618"
2147    "2143"  "3621"  "2147"
2175    "2143"  "3621"  "2147"
2177    "2143"  "3621"  "2147"
2179    "2143"  "3621"  "2147"
2181    "2143"  "3621"  "2147"
2183    "2143"  "3621"  "2147"
2349    "2143"  "3621"  "2147"
2947    "2143"  "3621"  "2147"
3622    "2143"  "3621"  "2147"
3747    "2143"  "3621"  "2147"
3025    "2143"  "3621"  "3025"
3030    "2143"  "3621"  "3030"
3610    "2143"  "3621"  "3610"
3611    "2143"  "3621"  "3610"
3623    "2143"  "3621"  "3610"
3612    "2143"  "3621"  "3612"
3613    "2143"  "3621"  "3613"
3614    "2143"  "3621"  "3614"
3615    "2143"  "3621"  "3615"
3621    "2143"  "3621"  "3621"
3624    "2143"  "3621"  "3624"
3633    "2143"  "3621"  "3633"
3673    "2143"  "3673"  "3673"
3674    "2143"  "3673"  "3674"
3690    "2143"  "3673"  "3674"
3691    "2143"  "3673"  "3674"
3692    "2143"  "3673"  "3674"
3693    "2143"  "3673"  "3674"
3675    "2143"  "3673"  "3675"
3676    "2143"  "3673"  "3676"
3677    "2143"  "3673"  "3677"
3678    "2143"  "3678"  "3678"
3679    "2143"  "3678"  "3679"
3680    "2143"  "3678"  "3680"
3681    "2143"  "3678"  "3681"
3815    "2143"  "3678"  "3815"
2079    "2364"  "2142"  "2079"
2142    "2364"  "2142"  "2142"
2288    "2364"  "2142"  "2288"
2289    "2364"  "2142"  "2289"
2364    "2364"  "2364"  "2364"
2434    "2364"  "2434"  "2434"
2632    "2364"  "2434"  "2632"
2635    "2364"  "2434"  "2635"
2643    "2364"  "2434"  "2643"
2683    "2364"  "2434"  "2683"
2685    "2364"  "2434"  "2683"
2869    "2364"  "2434"  "2683"
2872    "2364"  "2434"  "2683"
2873    "2364"  "2434"  "2683"
2972    "2364"  "2434"  "2683"
3483    "2364"  "2434"  "2683"
3645    "2364"  "2434"  "2683"
3646    "2364"  "2434"  "2683"
3893    "2364"  "2434"  "2683"
3894    "2364"  "2434"  "2683"
2684    "2364"  "2434"  "2684"
2728    "2364"  "2434"  "2728"
2793    "2364"  "2434"  "2793"
2860    "2364"  "2434"  "2860"
2866    "2364"  "2434"  "2866"
2965    "2364"  "2434"  "2965"
2702    "2364"  "2434"  "3361"
3361    "2364"  "2434"  "3361"
3370    "2364"  "2434"  "3370"
3382    "2364"  "2434"  "3370"
3383    "2364"  "2434"  "3370"
3683    "2364"  "2434"  "3370"
3688    "2364"  "2434"  "3370"
2634    "2364"  "2434"  "3373"
3373    "2364"  "2434"  "3373"
3501    "2364"  "2434"  "3501"
3810    "2364"  "2434"  "3810"
3813    "2364"  "2434"  "3813"
3898    "2364"  "2434"  "3898"
1084    "2364"  "2475"  "1084"
1085    "2364"  "2475"  "1084"
1086    "2364"  "2475"  "1084"
1088    "2364"  "2475"  "1084"
1908    "2364"  "2475"  "1084"
1909    "2364"  "2475"  "1084"
2450    "2364"  "2475"  "1084"
2692    "2364"  "2475"  "1084"
2693    "2364"  "2475"  "1084"
2694    "2364"  "2475"  "1084"
3064    "2364"  "2475"  "1084"
3183    "2364"  "2475"  "1084"
3241    "2364"  "2475"  "1084"
3243    "2364"  "2475"  "1084"
3292    "2364"  "2475"  "1084"
3331    "2364"  "2475"  "1084"
3828    "2364"  "2475"  "1084"
1087    "2364"  "2475"  "1089"
1089    "2364"  "2475"  "1089"
1090    "2364"  "2475"  "1089"
1091    "2364"  "2475"  "1089"
1092    "2364"  "2475"  "1089"
2393    "2364"  "2475"  "1089"
3184    "2364"  "2475"  "1089"
1083    "2364"  "2475"  "2365"
2365    "2364"  "2475"  "2365"
2920    "2364"  "2475"  "2365"
3185    "2364"  "2475"  "2365"
3227    "2364"  "2475"  "2365"
3858    "2364"  "2475"  "2365"
3859    "2364"  "2475"  "2365"
3887    "2364"  "2475"  "2365"
3888    "2364"  "2475"  "2365"
3889    "2364"  "2475"  "2365"
3890    "2364"  "2475"  "2365"
2475    "2364"  "2475"  "2475"
2476    "2364"  "2475"  "2476"
2477    "2364"  "2475"  "2477"
2561    "2364"  "2475"  "2561"
2564    "2364"  "2475"  "2561"
2608    "2364"  "2475"  "2561"
2856    "2364"  "2475"  "2561"
2857    "2364"  "2475"  "2561"
2858    "2364"  "2475"  "2561"
2859    "2364"  "2475"  "2561"
3182    "2364"  "2475"  "2561"
3892    "2364"  "2475"  "2561"
2835    "2364"  "2475"  "2835"
2836    "2364"  "2475"  "2835"
3188    "2364"  "2475"  "2835"
3758    "2364"  "2475"  "2835"
2868    "2364"  "2475"  "2868"
3225    "2364"  "2475"  "2868"
3350    "2364"  "2475"  "2868"
2914    "2364"  "2475"  "2914"
3036    "2364"  "2475"  "2914"
3037    "2364"  "2475"  "2914"
3232    "2364"  "2475"  "2914"
3342    "2364"  "2475"  "2914"
3181    "2364"  "2475"  "3181"
3187    "2364"  "2475"  "3187"
3221    "2364"  "2475"  "3221"
3222    "2364"  "2475"  "3222"
3295    "2364"  "2475"  "3222"
3223    "2364"  "2475"  "3223"
3224    "2364"  "2475"  "3224"
3226    "2364"  "2475"  "3226"
3228    "2364"  "2475"  "3228"
3229    "2364"  "2475"  "3229"
3230    "2364"  "2475"  "3230"
3371    "2364"  "2475"  "3371"
3746    "2364"  "2475"  "3371"
3797    "2364"  "2475"  "3371"
3798    "2364"  "2475"  "3371"
3764    "2364"  "2475"  "3764"
3765    "2364"  "2475"  "3764"
96  "2364"  "2475"  "96"
189 "2364"  "2475"  "96"
190 "2364"  "2475"  "96"
191 "2364"  "2475"  "96"
192 "2364"  "2475"  "96"
588 "2364"  "2475"  "96"
1082    "2364"  "2475"  "96"
1814    "2364"  "2475"  "96"
1822    "2364"  "2475"  "96"
1937    "2364"  "2475"  "96"
2414    "2364"  "2475"  "96"
2855    "2364"  "2475"  "96"
3044    "2364"  "2475"  "96"
3180    "2364"  "2475"  "96"
3231    "2364"  "2475"  "96"
3377    "2364"  "2475"  "96"
3685    "2364"  "2475"  "96"
3822    "2364"  "2475"  "96"
3860    "2364"  "2475"  "96"
3861    "2364"  "2475"  "96"
3891    "2364"  "2475"  "96"
2486    "2364"  "2486"  "2486"
2620    "2364"  "2620"  "2620"
3821    "2364"  "2620"  "3821"
3825    "2364"  "2620"  "3825"
3826    "2364"  "2620"  "3826"
3827    "2364"  "2620"  "3827"
2456    "2364"  "2667"  "2456"
2457    "2364"  "2667"  "2456"
2458    "2364"  "2667"  "2456"
3754    "2364"  "2667"  "2456"
2667    "2364"  "2667"  "2667"
2668    "2364"  "2667"  "2668"
2671    "2364"  "2667"  "2668"
3012    "2364"  "2667"  "2668"
2669    "2364"  "2667"  "2669"
2672    "2364"  "2667"  "2669"
2673    "2364"  "2667"  "2669"
2753    "2364"  "2667"  "2669"
2754    "2364"  "2667"  "2669"
3011    "2364"  "2667"  "2669"
3755    "2364"  "2667"  "2669"
2708    "2364"  "2667"  "2708"
2709    "2364"  "2667"  "2708"
2712    "2364"  "2667"  "2708"
2713    "2364"  "2667"  "2708"
2710    "2364"  "2667"  "2710"
2711    "2364"  "2667"  "2710"
2729    "2364"  "2667"  "2729"
2735    "2364"  "2667"  "2729"
2736    "2364"  "2667"  "2729"
2737    "2364"  "2667"  "2729"
2738    "2364"  "2667"  "2729"
2796    "2364"  "2667"  "2796"
2802    "2364"  "2667"  "2796"
2803    "2364"  "2667"  "2796"
2804    "2364"  "2667"  "2796"
2808    "2364"  "2667"  "2796"
3023    "2364"  "2667"  "2796"
2799    "2364"  "2667"  "2799"
2805    "2364"  "2667"  "2799"
2800    "2364"  "2667"  "2800"
2806    "2364"  "2667"  "2800"
2801    "2364"  "2667"  "2801"
2807    "2364"  "2667"  "2801"
2973    "2364"  "2667"  "2973"
2988    "2364"  "2667"  "2973"
2974    "2364"  "2667"  "2974"
2978    "2364"  "2667"  "2974"
2979    "2364"  "2667"  "2974"
2989    "2364"  "2667"  "2974"
2975    "2364"  "2667"  "2975"
2976    "2364"  "2667"  "2975"
2977    "2364"  "2667"  "2975"
2987    "2364"  "2667"  "2975"
3013    "2364"  "2667"  "3013"
3014    "2364"  "2667"  "3013"
3016    "2364"  "2667"  "3016"
3017    "2364"  "2667"  "3016"
3018    "2364"  "2667"  "3018"
3019    "2364"  "2667"  "3018"
3020    "2364"  "2667"  "3020"
3021    "2364"  "2667"  "3020"
3022    "2364"  "2667"  "3020"
3072    "2364"  "2667"  "3072"
3073    "2364"  "2667"  "3072"
3074    "2364"  "2667"  "3072"
3126    "2364"  "2667"  "3126"
3189    "2364"  "2667"  "3126"
3190    "2364"  "2667"  "3126"
3191    "2364"  "2667"  "3126"
3192    "2364"  "2667"  "3126"
3193    "2364"  "2667"  "3126"
3194    "2364"  "2667"  "3126"
3195    "2364"  "2667"  "3126"
3196    "2364"  "2667"  "3126"
3197    "2364"  "2667"  "3126"
3198    "2364"  "2667"  "3126"
3199    "2364"  "2667"  "3126"
3200    "2364"  "2667"  "3126"
3201    "2364"  "2667"  "3126"
3202    "2364"  "2667"  "3126"
3203    "2364"  "2667"  "3126"
3204    "2364"  "2667"  "3126"
3205    "2364"  "2667"  "3126"
3206    "2364"  "2667"  "3126"
3283    "2364"  "2667"  "3283"
3284    "2364"  "2667"  "3283"
3290    "2364"  "2667"  "3290"
3291    "2364"  "2667"  "3290"
3753    "2364"  "2667"  "3803"
3803    "2364"  "2667"  "3803"
3804    "2364"  "2667"  "3804"
3805    "2364"  "2667"  "3804"
2718    "2364"  "2718"  "2718"
2730    "2364"  "2718"  "2730"
2731    "2364"  "2718"  "2731"
2732    "2364"  "2718"  "2732"
2733    "2364"  "2718"  "2733"
3150    "2364"  "2718"  "3150"
3152    "2364"  "2718"  "3152"
3338    "2364"  "2718"  "3338"
3458    "2364"  "2718"  "3458"
2762    "2364"  "2762"  "2762"
2769    "2364"  "2769"  "2769"
2823    "2364"  "2823"  "2823"
2958    "2364"  "2958"  "2958"
2970    "2364"  "2970"  "2970"
2971    "2364"  "2971"  "2971"
3028    "2364"  "3028"  "3028"
3077    "2364"  "3077"  "3077"
1790    "2364"  "3084"  "1790"
1792    "2364"  "3084"  "1790"
1793    "2364"  "3084"  "1790"
1794    "2364"  "3084"  "1790"
2383    "2364"  "3084"  "1790"
2675    "2364"  "3084"  "1790"
3451    "2364"  "3084"  "1790"
3452    "2364"  "3084"  "1790"
3457    "2364"  "3084"  "1790"
2366    "2364"  "3084"  "2366"
2439    "2364"  "3084"  "2366"
2440    "2364"  "3084"  "2366"
2448    "2364"  "3084"  "2366"
2449    "2364"  "3084"  "2366"
2942    "2364"  "3084"  "2366"
2367    "2364"  "3084"  "2367"
2820    "2364"  "3084"  "2367"
2821    "2364"  "3084"  "2367"
2861    "2364"  "3084"  "2367"
2867    "2364"  "3084"  "2367"
2894    "2364"  "3084"  "2367"
3214    "2364"  "3084"  "2367"
3882    "2364"  "3084"  "2367"
2368    "2364"  "3084"  "2368"
2895    "2364"  "3084"  "2368"
2896    "2364"  "3084"  "2368"
2897    "2364"  "3084"  "2368"
2369    "2364"  "3084"  "2369"
3055    "2364"  "3084"  "2369"
3056    "2364"  "3084"  "2369"
3454    "2364"  "3084"  "2369"
2408    "2364"  "3084"  "2408"
2409    "2364"  "3084"  "2408"
2410    "2364"  "3084"  "2408"
2411    "2364"  "3084"  "2408"
2413    "2364"  "3084"  "2408"
2438    "2364"  "3084"  "2408"
2447    "2364"  "3084"  "2408"
2452    "2364"  "3084"  "2408"
2459    "2364"  "3084"  "2408"
2463    "2364"  "3084"  "2408"
2464    "2364"  "3084"  "2408"
2465    "2364"  "3084"  "2408"
3208    "2364"  "3084"  "2408"
3209    "2364"  "3084"  "2408"
3210    "2364"  "3084"  "2408"
3339    "2364"  "3084"  "2408"
3340    "2364"  "3084"  "2408"
3341    "2364"  "3084"  "2408"
3343    "2364"  "3084"  "2408"
3346    "2364"  "3084"  "2408"
3347    "2364"  "3084"  "2408"
3348    "2364"  "3084"  "2408"
3817    "2364"  "3084"  "2408"
2436    "2364"  "3084"  "2436"
2446    "2364"  "3084"  "2436"
2900    "2364"  "3084"  "2436"
3219    "2364"  "3084"  "2436"
2679    "2364"  "3084"  "2679"
2704    "2364"  "3084"  "2679"
2705    "2364"  "3084"  "2679"
2775    "2364"  "3084"  "2775"
3657    "2364"  "3084"  "2775"
3658    "2364"  "3084"  "2775"
3659    "2364"  "3084"  "2775"
3660    "2364"  "3084"  "2775"
3661    "2364"  "3084"  "2775"
3662    "2364"  "3084"  "2775"
3663    "2364"  "3084"  "2775"
3664    "2364"  "3084"  "2775"
2834    "2364"  "3084"  "2834"
2837    "2364"  "3084"  "2834"
2838    "2364"  "3084"  "2834"
2898    "2364"  "3084"  "2834"
2899    "2364"  "3084"  "2834"
2921    "2364"  "3084"  "2834"
3083    "2364"  "3084"  "3083"
3464    "2364"  "3084"  "3083"
3084    "2364"  "3084"  "3084"
3211    "2364"  "3084"  "3211"
3213    "2364"  "3084"  "3213"
3215    "2364"  "3084"  "3215"
3216    "2364"  "3084"  "3216"
3217    "2364"  "3084"  "3217"
3218    "2364"  "3084"  "3218"
3220    "2364"  "3084"  "3220"
3358    "2364"  "3084"  "3358"
3359    "2364"  "3084"  "3359"
3360    "2364"  "3084"  "3360"
3116    "2364"  "3116"  "3116"
3120    "2364"  "3116"  "3120"
3121    "2364"  "3116"  "3121"
3122    "2364"  "3116"  "3122"
3123    "2364"  "3116"  "3123"
3124    "2364"  "3116"  "3124"
3125    "2364"  "3116"  "3125"
3130    "2364"  "3130"  "3130"
3131    "2364"  "3131"  "3131"
3133    "2364"  "3133"  "3133"
3093    "2364"  "3256"  "3093"
3114    "2364"  "3256"  "3093"
3115    "2364"  "3256"  "3093"
3263    "2364"  "3256"  "3093"
3264    "2364"  "3256"  "3093"
3274    "2364"  "3256"  "3093"
3275    "2364"  "3256"  "3093"
3256    "2364"  "3256"  "3256"
3257    "2364"  "3256"  "3257"
3259    "2364"  "3256"  "3257"
3260    "2364"  "3256"  "3257"
3266    "2364"  "3256"  "3257"
3258    "2364"  "3256"  "3258"
3261    "2364"  "3256"  "3258"
3262    "2364"  "3256"  "3258"
3273    "2364"  "3256"  "3258"
3265    "2364"  "3256"  "3265"
3698    "2364"  "3256"  "3698"
3699    "2364"  "3256"  "3698"
3700    "2364"  "3256"  "3698"
3701    "2364"  "3256"  "3698"
3730    "2364"  "3256"  "3698"
3897    "2364"  "3256"  "3698"
3702    "2364"  "3256"  "3702"
3703    "2364"  "3256"  "3702"
3704    "2364"  "3256"  "3702"
3705    "2364"  "3256"  "3702"
3732    "2364"  "3256"  "3702"
3706    "2364"  "3256"  "3706"
3707    "2364"  "3256"  "3706"
3708    "2364"  "3256"  "3706"
3709    "2364"  "3256"  "3706"
3731    "2364"  "3256"  "3706"
3710    "2364"  "3256"  "3710"
3711    "2364"  "3256"  "3710"
3712    "2364"  "3256"  "3710"
3713    "2364"  "3256"  "3710"
3733    "2364"  "3256"  "3710"
3714    "2364"  "3256"  "3714"
3715    "2364"  "3256"  "3714"
3716    "2364"  "3256"  "3714"
3717    "2364"  "3256"  "3714"
3736    "2364"  "3256"  "3714"
3718    "2364"  "3256"  "3718"
3719    "2364"  "3256"  "3718"
3720    "2364"  "3256"  "3718"
3721    "2364"  "3256"  "3718"
3735    "2364"  "3256"  "3718"
3722    "2364"  "3256"  "3722"
3723    "2364"  "3256"  "3722"
3724    "2364"  "3256"  "3722"
3725    "2364"  "3256"  "3722"
3734    "2364"  "3256"  "3722"
3726    "2364"  "3256"  "3726"
3727    "2364"  "3256"  "3726"
3728    "2364"  "3256"  "3726"
3729    "2364"  "3256"  "3726"
3737    "2364"  "3256"  "3726"
3279    "2364"  "3279"  "3279"
3302    "2364"  "3302"  "3302"
3763    "2364"  "3302"  "3763"
3319    "2364"  "3319"  "3319"
3369    "2364"  "3369"  "3369"
1786    "2364"  "3586"  "1786"
1788    "2364"  "3586"  "1786"
2076    "2364"  "3586"  "1786"
2348    "2364"  "3586"  "1786"
3606    "2364"  "3586"  "1786"
3607    "2364"  "3586"  "1786"
3895    "2364"  "3586"  "1786"
3586    "2364"  "3586"  "3586"
3818    "2364"  "3818"  "3818"
165 "2370"  "165"   "165"
263 "2370"  "165"   "263"
264 "2370"  "165"   "264"
265 "2370"  "165"   "265"
266 "2370"  "165"   "266"
3282    "2370"  "165"   "3282"
3762    "2370"  "165"   "3762"
587 "2370"  "165"   "587"
204 "2370"  "204"   "204"
3233    "2370"  "204"   "3233"
2180    "2370"  "2180"  "2180"
2184    "2370"  "2180"  "2184"
2189    "2370"  "2180"  "2189"
2194    "2370"  "2180"  "2194"
2199    "2370"  "2180"  "2199"
2395    "2370"  "2180"  "2395"
2703    "2370"  "2180"  "2703"
2721    "2370"  "2180"  "2721"
3499    "2370"  "2180"  "3499"
3500    "2370"  "2180"  "3500"
3802    "2370"  "2180"  "3802"
2200    "2370"  "2200"  "2200"
2417    "2370"  "2200"  "2417"
2418    "2370"  "2200"  "2418"
2437    "2370"  "2200"  "2437"
3684    "2370"  "2200"  "2437"
2441    "2370"  "2200"  "2441"
2443    "2370"  "2200"  "2443"
2444    "2370"  "2200"  "2444"
2674    "2370"  "2200"  "2674"
2680    "2370"  "2200"  "2674"
2677    "2370"  "2200"  "2677"
2740    "2370"  "2200"  "2677"
2741    "2370"  "2200"  "2677"
2678    "2370"  "2200"  "2678"
3236    "2370"  "2200"  "3236"
2254    "2370"  "2254"  "2254"
2656    "2370"  "2254"  "2656"
2258    "2370"  "2258"  "2258"
2260    "2370"  "2260"  "2260"
2282    "2370"  "2282"  "2282"
2283    "2370"  "2282"  "2283"
2284    "2370"  "2282"  "2284"
2285    "2370"  "2282"  "2285"
2286    "2370"  "2282"  "2286"
2400    "2370"  "2282"  "2400"
2401    "2370"  "2282"  "2401"
2370    "2370"  "2370"  "2370"
2453    "2370"  "2453"  "2453"
2460    "2370"  "2453"  "2461"
2461    "2370"  "2453"  "2461"
2663    "2370"  "2453"  "2663"
2666    "2370"  "2453"  "2663"
2827    "2370"  "2453"  "2827"
2830    "2370"  "2453"  "2827"
2828    "2370"  "2453"  "2828"
2831    "2370"  "2453"  "2828"
2829    "2370"  "2453"  "2829"
2832    "2370"  "2453"  "2829"
3604    "2370"  "2453"  "3604"
3837    "2370"  "2453"  "3837"
2454    "2370"  "2454"  "2454"
2455    "2370"  "2454"  "2455"
2462    "2370"  "2454"  "2462"
2676    "2370"  "2454"  "2676"
2743    "2370"  "2454"  "2743"
2767    "2370"  "2454"  "2767"
2792    "2370"  "2454"  "2792"
2822    "2370"  "2454"  "2822"
3648    "2370"  "2454"  "3648"
3790    "2370"  "2454"  "3790"
3791    "2370"  "2454"  "3790"
2485    "2370"  "2485"  "2485"
1992    "2370"  "2627"  "1992"
1993    "2370"  "2627"  "1992"
1994    "2370"  "2627"  "1992"
1997    "2370"  "2627"  "1992"
2627    "2370"  "2627"  "2627"
2628    "2370"  "2627"  "2628"
2629    "2370"  "2627"  "2628"
2630    "2370"  "2627"  "2628"
2691    "2370"  "2627"  "2628"
2964    "2370"  "2627"  "2628"
3840    "2370"  "2627"  "2628"
2688    "2370"  "2627"  "2688"
2689    "2370"  "2627"  "2688"
2690    "2370"  "2627"  "2688"
2778    "2370"  "2627"  "2688"
2779    "2370"  "2627"  "2688"
2948    "2370"  "2627"  "2948"
2949    "2370"  "2627"  "2948"
2962    "2370"  "2627"  "2948"
2966    "2370"  "2627"  "2966"
2967    "2370"  "2627"  "2966"
2968    "2370"  "2627"  "2966"
2969    "2370"  "2627"  "2966"
3242    "2370"  "2627"  "3242"
3251    "2370"  "2627"  "3251"
3252    "2370"  "2627"  "3251"
3253    "2370"  "2627"  "3251"
3254    "2370"  "2627"  "3251"
3255    "2370"  "2627"  "3251"
2662    "2370"  "2662"  "2662"
157 "2370"  "2662"  "3495"
3495    "2370"  "2662"  "3495"
858 "2370"  "2662"  "3496"
3496    "2370"  "2662"  "3496"
3497    "2370"  "2662"  "3497"
2659    "2370"  "2662"  "3498"
3498    "2370"  "2662"  "3498"
7   "2370"  "2662"  "7"
2402    "2370"  "2662"  "7"
2658    "2370"  "2662"  "7"
2660    "2370"  "2662"  "7"
2661    "2370"  "2662"  "7"
2725    "2370"  "2764"  "2725"
2726    "2370"  "2764"  "2725"
2727    "2370"  "2764"  "2725"
2764    "2370"  "2764"  "2764"
2765    "2370"  "2764"  "2765"
2766    "2370"  "2764"  "2766"
2768    "2370"  "2764"  "2768"
2842    "2370"  "2764"  "2842"
3009    "2370"  "2764"  "3009"
3010    "2370"  "2764"  "3010"
3816    "2370"  "2764"  "3816"
3838    "2370"  "2764"  "3838"
3839    "2370"  "2764"  "3839"
2915    "2370"  "2915"  "2915"
2916    "2370"  "2915"  "2916"
2917    "2370"  "2915"  "2917"
3830    "2370"  "2915"  "3830"
1023    "2370"  "3" "1023"
1024    "2370"  "3" "1024"
1026    "2370"  "3" "1026"
2626    "2370"  "3" "1026"
2670    "2370"  "3" "1026"
2686    "2370"  "3" "1026"
2687    "2370"  "3" "1026"
1031    "2370"  "3" "1031"
1038    "2370"  "3" "1038"
2354    "2370"  "3" "1038"
108 "2370"  "3" "108"
206 "2370"  "3" "108"
2014    "2370"  "3" "108"
2015    "2370"  "3" "108"
3026    "2370"  "3" "108"
3027    "2370"  "3" "108"
3031    "2370"  "3" "108"
117 "2370"  "3" "117"
2080    "2370"  "3" "117"
2081    "2370"  "3" "117"
2082    "2370"  "3" "117"
2083    "2370"  "3" "117"
2412    "2370"  "3" "117"
3293    "2370"  "3" "117"
3695    "2370"  "3" "117"
139 "2370"  "3" "139"
155 "2370"  "3" "155"
2631    "2370"  "3" "155"
17  "2370"  "3" "17"
170 "2370"  "3" "170"
179 "2370"  "3" "179"

1 Ответ

1 голос
/ 05 апреля 2020

Это очень просто, если вы не привязаны к описаниям уровней, которые находятся только в заголовке - в столбце дерева вы можете выполнить очень простое c форматирование. См. пример fiddle

Но что-то простое, как показано ниже, даст вам небольшое дерево:

select cat_id
, case when cat_id = lvl_1 then cat_id::text
    when cat_id = lvl_2 then '# '|| cat_id::text
    when cat_id = lvl_3 then '## '|| cat_id::text
    else '### '|| cat_id::text
    end
from categories
order by lvl_1, case when cat_id = lvl_1 then 0 else lvl_1 end
 ,lvl_2, case when lvl_2 = cat_id then 0 else lvl_2 end
 , lvl_3, case when lvl_3 = cat_id then 0 else lvl_3 end
 , cat_id

Если вы хотите включить описание "lvl 1" в В первой строке на этом уровне вы можете использовать оконные функции , чтобы увидеть, является ли предыдущая строка тем же «уровнем», что и текущая строка, и если они не того же уровня, то включите описание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...