सबसे पहले, पता करें कि किन रिकॉर्ड्स को अपडेट करने की आवश्यकता है:
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
अब, उन अभिलेखों को सही grp_id के साथ अद्यतन करने के लिए क्वेरी को संशोधित करें। ध्यान दें कि मैंने "g2" के उपनाम के साथ tbl_group तालिका में एक अतिरिक्त जुड़ाव जोड़ा है। यह सही समूह होगा।
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
ध्यान दें कि tbl_group g2 पर आंतरिक जुड़ाव के कारण, यदि कोई tbl_group रिकॉर्ड मौजूद नहीं है, जहां इंडिकैट उसके संबद्ध tbl_indicator रिकॉर्ड के इंडिकैट मान से मेल खाता है, तो रिकॉर्ड्स को अपडेट नहीं किया जाएगा।