[英]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 也相關:
嘗試這個。 它將為您提供行之間的依賴關系。 如果您可以發布預期的 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.