簡體   English   中英

已創建 SQL 表上的父子關系

[英]Parent Child relation on already created SQL Table

我在 SQL 上有下表(不可變):

類別 代碼
部分 一個
分配 01
團體 011
Class 0111
Class 0112
分配 02
團體 021
Class 0211

我想說 CLASSES (ex 0111 & 0112) 屬於 GROUP (011),屬於 DIVISION (01),屬於 SECTION (A)。

示例:如果有人搜索 Class 0211,我希望我的表知道 Class 屬於 SECTION A。

我怎樣才能做到這一點? 多謝你們。

我通過創建一個加入“SECTION + all”的新列來解決它(示例:C0411),因為這種關系不可能通過編程來實現。

現在,我擁有與 nums 相關的所有 muy 字段(011 屬於 01...),並且由於這個新列,Section 也相關:

有多少個 SECTIONS 的示例

嘗試這個。 它將為您提供行之間的依賴關系。 如果您可以發布預期的 output,我很樂意調整答案以使其符合您的要求。

with aux (category, code) as(
    select 'Section',   'A' from dual union all
    select 'Division',  '01' from dual union all
    select 'Group', '011' from dual union all
    select 'Class', '0111' from dual union all
    select 'Class', '0112' from dual union all
    select 'Division',  '02' from dual union all
    select 'Group', '021' from dual union all
    select 'Class', '0211' from dual)
SELECT
    a.*,
    sys_connect_by_path(code, '>') hier
FROM
    aux a
CONNECT BY
    PRIOR decode(category, 'Section', 1, 'Division', 2, 'Group',
                 3, 'Class', 4, 5) = decode(category, 'Section', 1, 'Division', 2, 'Group',
                                            3, 'Class', 4, 5) - 1;

Output:

Category  Code Hier
--------------------
Section A   >A
Division    01  >A>01
Group   011 >A>01>011
Class   0111    >A>01>011>0111
Class   0112    >A>01>011>0112
Class   0211    >A>01>011>0211
Group   021 >A>01>021
Class   0111    >A>01>021>0111
Class   0112    >A>01>021>0112
Class   0211    >A>01>021>0211
Division    02  >A>02
Group   011 >A>02>011
Class   0111    >A>02>011>0111
Class   0112    >A>02>011>0112
Class   0211    >A>02>011>0211
Group   021 >A>02>021
Class   0111    >A>02>021>0111
Class   0112    >A>02>021>0112
Class   0211    >A>02>021>0211
Division    01  >01
Group   011 >01>011
Class   0111    >01>011>0111
Class   0112    >01>011>0112
Class   0211    >01>011>0211
Group   021 >01>021
Class   0111    >01>021>0111
Class   0112    >01>021>0112
Class   0211    >01>021>0211
Division    02  >02
Group   011 >02>011
Class   0111    >02>011>0111
Class   0112    >02>011>0112
Class   0211    >02>011>0211
Group   021 >02>021
Class   0111    >02>021>0111
Class   0112    >02>021>0112
Class   0211    >02>021>0211
Group   011 >011
Class   0111    >011>0111
Class   0112    >011>0112
Class   0211    >011>0211
Group   021 >021
Class   0111    >021>0111
Class   0112    >021>0112
Class   0211    >021>0211
Class   0111    >0111
Class   0112    >0112
Class   0211    >0211

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM