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 Java, така че да мога да тествам моя RIA и да избегна противопожарни тренировки, когато тези актуализации са публични?

  2. Представяне на Easysoft Oracle® Driver във вашата SOA среда

  3. Имената на Oracle TNS не се показват при добавяне на нова връзка към SQL Developer

  4. BadImageFormatException на доставчик на .net oracle

  5. Стойността на данните във времето