日期:2014-05-17  浏览次数:21022 次

这样的视图怎么建立啊?
有表记录
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 

这样因该也行的。

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