giovedì 26 agosto 2010

SQL Server 2005 - TSQL - Aggiornamento di una tabella tramite sub-query

Si deve aggiornare un campo di una tabella prendendo il valore da un’altra, dove il punto di contatto tra le due è rappresentato da un altro campo in comune tra la seconda ed una terza tabella.


In questo esempio il campo AuxiliaryCode della tabella FinalPromotion deve essere aggiornato con il valore del campo Code della DocumentCoupon che non ha FK verso FinalPromotion ma verso Document che a sua volta è legata a FinalPromotion.

Come sempre lo statement T-SQL che segue, potrebbe valere più di mille parole:



UPDATE FP

SET FP.AuxiliaryCode = A.Code

FROM FinalPromotion FP

INNER JOIN Document D

ON FP.DocumentGuid = D.Guid

INNER JOIN

(SELECT D.UpperDocumentGuid AS UDG, DC.Code FROM DocumentCoupon DC

INNER JOIN Document D

ON DC.Id = D.CouponId) A

ON D.UpperDocumentGuid = A.UDG

WHERE D.UpperDocumentGuid = 'b9464a81-b83c-4ce4-8758-b0e632240c2b'