请教一个技术问题
tb_c 表中存在(id,vislist,dept)
t_user表中存在(id,name,deptid)
vislist 是t_user(id)的集合
请问我怎么样用语句更新tb_c中的dept
注意:dept可能为单个depetid,也可能为deptid的集合组
若是为集合组则要求类似于(1,2,21,20)这样的表示
tb_c 表中存在(id,vislist,dept)
t_user表中存在(id,name,deptid)
vislist 是t_user(id)的集合
请问我怎么样用语句更新tb_c中的dept
注意:dept可能为单个depetid,也可能为deptid的集合组
若是为集合组则要求类似于(1,2,21,20)这样的表示
id vislist dept
1 1,20,25
2 2,3,4
3 1
t_user中的数据可能为
id name deptid
1 李 01
2 王 02
3 赵 04
4 刘 09
5 孙 10
20 周 01
25 马 02那么就一个SQL语句或者其他方法
实现对tb_c中dept的更新,实现的效果为
id vislist dept
1 1,20,25 01,01,02
2 2,3,4 02,04,09
3 1 01
dept代表什么意义,你取的值是怎么来的啊?与其他的值有关联不?
create table tb_c(id varchar(2), vislist varchar(20), dept varchar(20),
constraint PK_tb_c primary key (id)
);
create table t_user(id varchar(2), name varchar(20), deptid varchar(20),
constraint PK_t_user primary key (id)
);下面把你的数据插入......
function如下create or replace function Link(sWhere varchar2,sType varchar2)
return varchar2
is
str varchar2(500);
sReturn varchar2(50);
UnionReturn varchar2(2000);
type cursor_type is ref cursor;
c1 cursor_type;
begin
str:='select tu.deptid from tb_c tc,t_user tu where '',''||tc.vislist||'','' like ''%,''||tu.id||'',%'' and tc.id='||sWhere||' order by tc.id';
--DBMS_OUTPUT.put_line('str='||str);
open c1 for str;
loop
fetch c1 into sReturn;
exit when c1%notfound;
UnionReturn:=UnionReturn||sType||sReturn;
end loop;
UnionReturn:=ltrim(UnionReturn,sType);
--DBMS_OUTPUT.put_line('UnionReturn='||UnionReturn);
return UnionReturn;
end ;最后是sqlselect tc.*,tu.*,Link(tc.id,',') from tb_c tc,t_user tu
where ','||tc.vislist||',' like '%,'||tu.id||',%'
;