Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于更新主表的复杂sql查询_Sql_Sql Server_Join_Sql Update_Jointable - Fatal编程技术网

用于更新主表的复杂sql查询

用于更新主表的复杂sql查询,sql,sql-server,join,sql-update,jointable,Sql,Sql Server,Join,Sql Update,Jointable,我有三张桌子 1) 主表 2) 旗子桌 3) emp_旗杆详情 主表结构 emp_no hod_no emp_name flgType E51397 E44417 Asha V E42342 E44417 Shaikh Faiz Ahmed E06636 E44417 Balu K U emp_无hod_无emp_名称flgType E51397 E44417阿沙五世 E42342 E44417谢赫·法伊兹·艾哈迈德 E06636 E444

我有三张桌子 1) 主表 2) 旗子桌 3) emp_旗杆详情

主表结构

emp_no hod_no emp_name flgType E51397 E44417 Asha V E42342 E44417 Shaikh Faiz Ahmed E06636 E44417 Balu K U emp_无hod_无emp_名称flgType E51397 E44417阿沙五世 E42342 E44417谢赫·法伊兹·艾哈迈德 E06636 E44417巴鲁K U 在上表中,我将flgtype列保留为空,以便稍后更新 现在我有如下的Flag_表结构

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_no hod_no emp_name flgType E51397 E44417 Asha V BM E42342 E44417 Shaikh Faiz Ahmed BM E06636 E44417 Balu K U BM 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结构如下

ecode flag E44417 BRML12B E42342 BRMRMB E06636 BRMZM E51397 BRML12B ecode旗 E44417 BRML12B E42342 BRMRMB E06636 BRMZM E51397 BRML12B 这是我的桌子结构,现在我的查询是,我想用Flag_表的flagcategory列更新main_表的flgtype column。这样,如果emp_flagdetails表中存在来自main_表的empno,那么我们将检查匹配员工的emp_flagdetails的Flag列,然后我们得到这个Flag列值,如果它存在于flag_表中,我们将用flagcategory列值更新main_表flgtype列…因此输出如下

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_no hod_no emp_name flgType E51397 E44417 Asha V BM E42342 E44417 Shaikh Faiz Ahmed BM E06636 E44417 Balu K U BM emp_无hod_无emp_名称flgType E51397 E44417 Asha V BM E42342 E4417谢赫·法伊兹·艾哈迈德BM E06636 E44417巴鲁克BM 请帮助我编写查询

查询:

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

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;