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

Oracle पदानुक्रमित क्वेरी

आप (और फ़ंक्शन CONNECT_BY_ROOT द्वारा कनेक्ट करके वांछित परिणाम प्राप्त कर सकते हैं जो रूट नोड का कॉलम मान लौटाता है):

SQL> WITH users AS (
  2     SELECT 1 user_id, (null) PARENT FROM dual
  3     UNION ALL SELECT 2, 1 FROM dual
  4     UNION ALL SELECT 3, 1 FROM dual
  5     UNION ALL SELECT 4, 3 FROM dual
  6  ), permissions AS (
  7     SELECT 'A' permission, 1 user_id FROM dual
  8     UNION ALL SELECT 'B', 3 FROM dual
  9  )
 10  SELECT lpad('*', 2 * (LEVEL-1), '*')||u.user_id u,
 11         u.user_id, connect_by_root(permission) permission
 12    FROM users u
 13    LEFT JOIN permissions p ON u.user_id = p.user_id
 14  CONNECT BY u.PARENT = PRIOR u.user_id
 15   START WITH p.permission IS NOT NULL
 16  ORDER SIBLINGS BY user_id;

U         USER_ID PERMISSION
--------- ------- ----------
3               3 B
**4             4 B
1               1 A
**2             2 A
**3             3 A
****4           4 A


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle सत्र का वेटइवेंट इतिहास कैसे खोजें

  2. प्रत्येक तालिका में एक स्तंभ के आधार पर किसी अन्य तालिका के डेटा के साथ एक तालिका में पंक्तियों को अपडेट करें

  3. एसक्यूएल में कॉलम मान की निरंतर घटना गणना कैसे प्राप्त करें?

  4. ओरेकल फ़ंक्शन स्ट्रिंग्स की तुलना ऑर्डर नहीं किए गए तरीके से करने के लिए करता है

  5. Oracle में दो साल के महीने और दिन के मूल्यों के बीच अंतर