Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle SQL में मूल पंक्ति के सभी पुनरावर्ती बच्चों को कैसे प्राप्त करें?

आप करीब हैं:

select connect_by_root parent_id base, parent_id, child_id, qty
from md_boms
connect by prior child_id = parent_id
order by base, parent_id, child_id;

          BASE  PARENT_ID   CHILD_ID        QTY
    ---------- ---------- ---------- ----------
            25         25         26          1 
            25         25         27          2 
            25         26         28          1 
            25         26         29          1 
            25         26         30          2 
            25         27         31          1 
            25         27         32          1 
            25         27         33          2 
            26         26         28          1 
            26         26         29          1 
            26         26         30          2 
            27         27         31          1 
            27         27         32          1 
            27         27         33          2 

     14 rows selected 

connect_by_root ऑपरेटर आपको आधार देता है parent_id

SQL Fiddle

मुझे यकीन नहीं है कि आप अपनी qty की गणना कैसे कर रहे हैं . मुझे लगता है कि आप बच्चे के पथ के लिए कुल चाहते हैं, लेकिन यह आपके द्वारा दिखाए गए से मेल नहीं खाता है। शुरुआती बिंदु के रूप में, उधार लेना बहुत इस उत्तर से भारी , आप कुछ इस तरह की कोशिश कर सकते हैं:

with hierarchy as (
  select connect_by_root parent_id base, parent_id, child_id, qty,
    sys_connect_by_path(child_id, '/') as path
  from md_boms
  connect by prior child_id = parent_id
)
select h.base, h.parent_id, h.child_id, sum(e.qty)
from hierarchy h
join hierarchy e on h.path like e.path ||'%'
group by h.base, h.parent_id, h.child_id
order by h.base, h.parent_id, h.child_id;

     BASE  PARENT_ID   CHILD_ID SUM(E.QTY)
---------- ---------- ---------- ----------
        25         25         26          1 
        25         25         27          2 
        25         26         28          2 
        25         26         29          2 
        25         26         30          3 
        25         27         31          3 
        25         27         32          3 
        25         27         33          4 
        26         26         28          1 
        26         26         29          1 
        26         26         30          2 
        27         27         31          1 
        27         27         32          1 
        27         27         33          2 

 14 rows selected 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL समूह द्वारा - प्रति माह/वर्ष रिकॉर्ड की गिनती, डालने पर त्रुटि - मान्य माह नहीं

  2. ओरेकल डेडलॉक माता-पिता/बच्चे और बच्चे ने एफके को अनुक्रमित किया है

  3. db . में किन कूटों का पत्राचार होता है?

  4. एक ही क्वेरी के माध्यम से विभिन्न स्तंभों में सकारात्मक और नकारात्मक मान प्रदर्शित करना चाहते हैं

  5. webLogic सर्वर के मूल JSF कार्यान्वयन को अक्षम करें और myfaces कार्यान्वयन का उपयोग करें