sql >> Database teknologi >  >> RDS >> Oracle

Oracle hierarkisk forespørgsel

du kan opnå det ønskede resultat med en forbindelse med (og funktionen CONNECT_BY_ROOT der returnerer kolonneværdien for rodnoden):

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. En MySQL IF-tilstand

  2. Venskabssystem SQL-struktur og forespørgsel

  3. Flyt SQL-data fra en tabel til en anden

  4. Hvordan bestiller jeg efter maksimalt to kolonner, som kan være nul i MySQL?