sql >> Databasteknik >  >> RDS >> Oracle

Få räkningar/summor på varje nivå i en hierarkisk fråga med CONNECT BY

Den här är ganska enkel:

09:38:54 [email protected]_xe> l                                      
  1  select sys_connect_by_path(dp.dir_name, '/') path    
  2         ,(select count(file_id)                       
  3             from dirs dc                              
  4                  ,files f                             
  5            where f.dir_id(+) = dc.dir_id              
  6          connect by prior dc.dir_id = dc.parent_dir_id
  7            start with dc.dir_id = dp.dir_id           
  8          ) count                                      
  9    from dirs dp                                       
 10    connect by prior dp.dir_id = dp.parent_dir_id      
 11*   start with dp.parent_dir_id is null                
09:38:55 [email protected]_xe> /                                      

PATH                                COUNT                 
------------------------------ ----------                 
/ROOT                                   6                 
/ROOT/DIR1_1                            4                 
/ROOT/DIR1_1/DIR2_1                     1                 
/ROOT/DIR1_1/DIR2_2                     3                 
/ROOT/DIR1_2                            2                 

5 rows selected.                                          

Elapsed: 00:00:00.02                                      


  1. Ett annat sätt att förbättra SQL-frågan för att undvika förening?

  2. CakePHP 3 - Spara data med föreningar där det är beroende av association

  3. Villkorligt mySQL-uttalande. Om sant UPPDATERA, om falskt INFOGA

  4. Är Date ett nyckelord i mysql?