oracle資料庫我有一張作業表EXT第一個欄位是可以執行這條任務的人員編號欄位名userId可能是多個也可能是一個(例如:001,002,003多個以逗號分割)我還有一張員工表emp,員工表中有個員工編號empCde,我要將兩個表關聯查詢以員工編號連接(select * from emp p,ext t where p.empCde=t.userId ),可是問題是多個可以執行人的任務對應不出來(比如:empCde='001',userId='001,002'),請問這種聯合查詢怎么寫,我要取emp表中離職的即valid欄位值是0的。十分感謝O(∩_∩)O謝謝!!
uj5u.com熱心網友回復:
說一下表結構,和你的預期結果,用 excel 畫一下吧,看起來更清楚;uj5u.com熱心網友回復:
用 regexp_substr()把逗號分隔的列變成多行,形成結果集ext1后,再與emp結果集進行聯合查詢。regexp_substr()可以百度查詢一下用法uj5u.com熱心網友回復:
select * from emp p,ext t where t.userId like '%'|| p.empCde ||'%'uj5u.com熱心網友回復:
create table ext(userid varchar2(32),worktype varchar2(32));create table emp(empcde varchar2(32),workername varchar2(32));
insert into ext(userid,worktype) values('001,002','作業1');
commit;
insert into ext(userid,worktype) values('001','作業2');
commit;
insert into emp(empcde,workername) values('001','張三');
commit;
insert into emp(empcde,workername) values('002','李四');
commit;
/*
這種做法首先 不會出現 下述情況
員工a 001 員工b 1001 a和b出現重復的地方
*/
select * from ext a,emp b where instr(a.userid,b.empcde) >= 1
/*你說的這種問題 一個員工可以有多個作業 一個作業也可以由多個員工做
最好分三張表來處理
一張 員工表 一張作業表 加上一張關系表 可以更好地處理這種多對多的關系*/
uj5u.com熱心網友回復:
2樓正解
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/93545.html
標籤:基礎和管理
上一篇:masking性能改善問題
下一篇:Oracle并行更新問題
