多表关联时进行关联更新

现有表A(CBO_MATERIAL)、B(CBO_MATCATEGORY)、C(MARA22@LINK_ECOLOGY9),将提供表A的code(A:code,C:matnr_ext)值,来进行更新表A的关联表B的ID(ID)值,表A的code值又关联了表C的code值,表C的字段phdra关联表B的code值,此时进行更新

1.先获取根据提供的(表A的code = 表C的matnr_ext)的值,获取在表C能关联到表B和表A的值:PRDHA = 表B的code,ID为表B的ID

select DISTINCT m.MATNR_EXT, m.PRDHA, cmy.ID FROM MARA22@LINK_ECOLOGY9 m
    INNER JOIN CBO_MATCATEGORY CMY ON CMY.CODE = M.PRDHA
    where m.matnr_ext IN (
     '4000006012', 
			'4000001153', 
			'4000001151', 
			'4000000111', 
			'4000000088', 
			'4000000039', 
			'4000000026', 
			'4000000006', 
			'4000000005', 
			'4000001315'
    )

多表关联时进行关联更新
2.进行更新

UPDATE CBO_MATERIAL C SET (C.MATCATEGORY_ID, c.BIDMATCATEGORY_ID) = (
  SELECT ID, ID FROM(
    select DISTINCT m.MATNR_EXT, m.PRDHA, cmy.ID FROM MARA22@LINK_ECOLOGY9 m
    INNER JOIN CBO_MATCATEGORY CMY ON CMY.CODE = M.PRDHA
    where m.matnr_ext IN (
     '4000006012', 
			'4000001153', 
			'4000001151', 
			'4000000111', 
			'4000000088', 
			'4000000039', 
			'4000000026', 
			'4000000006', 
			'4000000005', 
			'4000001315'
    )
  ) k WHERE c.CODE = k. matnr_ext
)WHERE c.CODE IN (
			'4000006012', 
			'4000001153', 
			'4000001151', 
			'4000000111', 
			'4000000088', 
			'4000000039', 
			'4000000026', 
			'4000000006', 
			'4000000005', 
			'4000001315'
)
上一篇:Qt 事件过滤器原理(installEventFilter函数)


下一篇:Functional Options