有4张表.文件表file;文件夹表folder;文件下载记录表file_down;用户表pub_user  oracle库文件表file 
------------------- 
fid(文件编号)   name(文件名)   username(上传人名称)   pid(文件夹编号) 文件夹表folder 
--------------- 
pid(文件夹编号)   ppid(文件夹父编号)   pname(文件夹名称) 文件下载记录表file_down   (存储已下载文件的文件编号及用户id) 
------------------------ 
userid(用户id)   fid(文件编号) 用户表pub_user 
---------------- 
userid(用户id)   username(用户名)   我需要求出当前用户(给定一用户id)没有下载的文件列表,求出的显示为 
fid(文件编号)   name(文件名)   username(上传人名称)   pid(文件夹编号)   pname(文件夹名称)   ppath(文件夹路径)   
1                         中国人.txt       阿光                                       90                         文件资料                         共享信息\本部信息\...\文件资料 我的sql: 
select   *   from   file   ff,folder   ffder   where   ff.id   not   in(select   fd.fid   from   file_down   fd   where   fd.userid   =   89)   and   ff.pid   =   ffder.pid 我只求出了以下信息,没求出ppath(文件夹路径)   
fid(文件编号)   name(文件名)   username(上传人名称)   pid(文件夹编号)   pname(文件夹名称) 

解决方案 »

  1.   

            PID    PPID     PNAME
    1 第一级目录
    2 1 第二级目录
    3 2 第三级目录
    4 3 第四级目录
    5 4 第五级目录
    select pname from folder f start with f.pid = 5 connect by prior f.ppid = f.pid;
    结果:
    PPID
    第五级目录
    第四级目录
    第三级目录
    第二级目录
    第一级目录
      

  2.   

    select pname from folder f start with f.pid = 5 connect by prior f.ppid = f.pid order by level desc;结果可以是
    PPID
    第一级目录
    第二级目录
    第三级目录
    第四级目录
    第五级目录可以再写一个存储过程将再将各级目录串起来.