Først skal du finde ud af, hvilke poster der skal opdateres:
select *
from tbl_order o
inner join tbl_group g on
g.grp_id = o.grp_id
inner join tbl_indicator i on
i.grp_nbr = g.grp_nbr
and i.sect_nbr = g.sect_nbr
where
g.indicat != i.indicat
Rediger nu forespørgslen for at opdatere disse poster med det korrekte grp_id. Bemærk, at jeg har tilføjet en ekstra join til tabellen tbl_group med et alias "g2". Dette vil være den rigtige gruppe.
update o set
o.grp_id = g2.grp_id
from tbl_order o
inner join tbl_group g on
g.grp_id = o.grp_id
inner join tbl_indicator i on
i.grp_nbr = g.grp_nbr
and i.sect_nbr = g.sect_nbr
inner join tbl_group g2 on
g2.grp_nbr = i.grp_nbr
and g2.sect_nbr = i.sect_nbr
and g2.indicat = i.indicat
where
g.indicat != i.indicat
Bemærk, at på grund af den indre joinforbindelse på tbl_group g2, vil posterne ikke blive opdateret, hvis der ikke eksisterer nogen tbl_group-record, hvor indicat matcher indicat-værdien af dens tilknyttede tbl_indicator-record.