首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

这样的视图如何建立啊

2011-12-12 
这样的视图怎么建立啊?有表记录T_TABLE_1COL_1COL_2COL_3COL_4COL_5COL_61Z001Z002Z003Z00432Z001Z002Z003

这样的视图怎么建立啊?
有表记录
T_TABLE_1
COL_1 COL_2 COL_3 COL_4 COL_5 COL_6
1 Z001 Z002 Z003 Z004 3
2 Z001 Z002 Z003 Z004 4
3 Z001 Z002 Z003 5 
4 Z001 Z002 6
5 Z001 7
6 8
假如COL_2 COL_3 COL_4 COL_5 中存放的都是代码 ,它的名称对应在T_TABLE_2 中
COL_1 COL_2 COL_3
1 Z001 张三  
1 Z002 李四
1 Z003 王五
1 Z004 赵大

我如何建立视图 要结果为:

1 Z001 张三 Z002 李四 Z003 王五 Z004 赵大 3
2 Z001 张三 Z002 李四 Z003 王五 Z004 赵大 4
3 Z001 张三 Z002 李四 Z003 王五 5 
4 Z001 张三 Z002 李四 6
5 Z001 张三 7
6 8

[解决办法]
select a.col_1,a.col_2,b.col_3,a.col_3,c.col_3,
a.col_4,d.col_3,a.col_5,e.col_3,a.col_6 from table1 a,table2 b,table2 c,table2 d,table2 e
where a.col_2=b.col_2 and a.col_3=c.col_2 and a.col_4=d.col_2 and a.col_5=e.col_2;

[解决办法]
赫赫,用左外连接就好了。

做法就是上面的人写的,table2 的四次连接。

select a.COL_2,a.COL_2,b.COL_3,a.COL_3,c.COL_3,a.COL_4,d.COL_3,a.COL_5,e.COL_3,a.COL_6
from T_TABLE_1 a
left outer join T_TABLE_2 b on a.COL_2 = b.COL_2
left outer join T_TABLE_2 c on a.COL_2 = c.COL_2
left outer join T_TABLE_2 d on a.COL_2 = d.COL_2
left outer join T_TABLE_2 e on a.COL_2 = e.COL_2

类似这样.
 
[解决办法]
select a.col_2,(select col_3 from t_table2 b where a.col_2 = b.col_2) as col2_name,
a.col_3,(select col_3 from t_table2 b where a.col_3 = b.col_2) as col3_name,
a.col_4,(select col_3 from t_table2 b where a.col_4 = b.col_2) as col4_name,
a.col_5,(select col_3 from t_table2 b where a.col_5 = b.col_2) as col5_name,
a.col_6 
from table_1 

这样因该也行的。

但是用这种子查询要注意了,子查询必须的出的结果是唯一的。

热点排行