3

我有 3 个表 1)main_table 2)Flag_table 3)emp_flagdetails

main_table 结构

emp_no hod_no emp_name flgType
E51397 E44417 阿莎 V  
E42342 E44417 谢赫·法伊兹·艾哈迈德   
E06636 E44417 巴鲁库   

在上表中,我将 flgtype 列保留为空白以便稍后更新,现在我有 Flag_table 结构如下

FlagId FlagCategory FlagType
1 BM BRML12B
2 BM BRMM12B
3 BM BRMRMB
4 BM BRMCMB
5 BM BRMZM
6 VH BRML12V
7 VH BRMM12V
8 VH BRMRMV
9 VH BRMCMV

emp_flagdetails 结构如下

编码标志
E44417 BRML12B
E42342 BRMRMB
E06636 BRMZM
E51397 BRML12B

这是我的表结构,现在我的查询是我想用 Flag_table 的 flagcategory 列更新 main_table 的 flgtype 列。这样,如果 main_table 中的 empno 存在于 emp_flagdetails 表中,那么我们将检查 emp_flagdetails 的标志列是否匹配员工,然后我们得到这个标志列值,如果它存在于标志表中,我们将在标志表中找到这个值,我们将用标志类别列值更新 main_table 的 flgtype 列......所以输出将如下

emp_no hod_no emp_name flgType
E51397 E44417 阿莎 V BM
E42342 E44417 谢赫法伊兹艾哈迈德 BM
E06636 E44417 巴鲁 KU BM

请帮我写查询

4

3 回答 3

2

询问:

SQLFIDDLE示例

UPDATE m
SET m.flgType = f.FlagCategory
FROM main_table m
 JOIN emp_flagdetails fd
  ON fd.ecode = m.emp_no   
 JOIN flag_table f
  ON f.FlagType = fd.flag;
于 2013-08-28T20:40:34.860 回答
1
update main_table m, (select a.emp_no, b.flagcategory from emp_flagdetails a, flag_table b 
where a.flag = b.flagtype) s set m.flgtype = s.flagcategory where m.emp_no = s.emp_no
于 2013-08-28T12:40:26.163 回答
0
update main_table
set flagtype= (select a.flagcategory 
    from (    select m.empno, f.flagcategory
                 from main_table m,emp_flagdetails e , flag_table f  
                 where m.empno=e.ecode
                  and e.eflag=f.flagtype) a
    where  main_table.empno=a.empno) ;
于 2015-08-18T01:25:17.030 回答