Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

aggiornamento sql (aiutami)

Per prima cosa, scopri quali record devono essere aggiornati:

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

Ora, modifica la query per aggiornare quei record con il corretto grp_id. Si noti che ho aggiunto un ulteriore join alla tabella tbl_group con un alias di "g2". Questo sarà il gruppo corretto.

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

Si noti che a causa dell'inner join su tbl_group g2, i record non verranno aggiornati se non esiste alcun record tbl_group in cui indicat corrisponde al valore indicat del record tbl_indicator associato.