在列表中查找ColumnName和列所在的表

时间:2013-09-20 05:02:08

标签: c# sql oracle oracle11g

我创建了一个View,我想查找视图中存在的所有列以及列所在的源表。例如:

CREATE VIEW myView AS
SELECT  
        firstName,
        middleName,
        you.lastName surName
FROM 
        myTable me
        LEFT OUTER JOIN yourTable you
        ON me.code = you.code

GO

所以这里我想要数据如下

 ----------------
|SourceTable|Column |
----------------
|me         |firstName|
|me         |middleName|
|you        |lastName|

任何人都可以帮助我。 P.S:我需要 Oracle

2 个答案:

答案 0 :(得分:0)

如果列名只存在于视图中使用的表中的一个表中,那么我们可以通过以下查询找到它。

select table_name, column_name 
from all_tab_columns 
where table_name in ("tables used") 
 and column_name in (select column_name 
                     from all_tab_columns 
                     where table_name = 'view_name');

答案 1 :(得分:0)

可以使用查询选择用于创建视图的表:

select 
  name , 
  type , 
  referenced_name , 
  referenced_type
from 
  user_dependencies 
where 
  name = 'VIEW_NAME' and 
  type = 'VIEW' and  
  referenced_type = 'TABLE';

如果视图列的表列名称相同,请尝试以下查询:

select 
  distinct table_name, column_name 
from 
  all_tab_columns 
where table_name in (select
                        referenced_name
                      from 
                        user_dependencies 
                      where 
                        name = 'VIEW_NAME' and 
                        type = 'VIEW' and  
                        referenced_type = 'TABLE') 
 and column_name in (select 
                        column_name 
                     from 
                        all_tab_columns 
                     where 
                        table_name = 'VIEW_NAME');