1.假设数据库中有a,b,c,d四张表,其中b依赖于a,c依赖于a,d依赖于b,我想在数据库中首先或得这些依赖关系
  b->a
  c->a
  d->b
  其中->为依赖的意思
2.通过以上的依赖关系,我想将这些表进行排序即a,b,c,d或者a,c,b,d其中b,c两者的先后顺序可以不管,但是d一定在b,c的后面,a一定在b,c的前面。
请有相关经验的朋友帮忙给个解决的思路。

解决方案 »

  1.   

    /********************************
    查询表之间的主外键关系
    ********************************/
    Select b.table_name 主键表名,
               b.column_name 主键列名,
               a.table_name 外键表名,
               a.column_name 外键列名
    From (Select a.constraint_name,
                           b.table_name,
                           b.column_name,
                           a.r_constraint_name
              From user_constraints a, user_cons_columns b
             Where a.constraint_type = 'R'
               And a.constraint_name = b.constraint_name) a,
           (Select Distinct a.r_constraint_name, b.table_name, b.column_name
              From user_constraints a, user_cons_columns b
             Where a.constraint_type = 'R'
               And a.r_constraint_name = b.constraint_name) b
    Where a.r_constraint_name = b.r_constraint_name