2010-10-12 3 views
0

J'ai une table TABLE1 (TABLE PARENT) avec des colonneslignes de mise à jour dans une table associée en fonction de l'état dans le tableau parent

StaffID (PK)
Nom
CategoryID (FK)

J'ai aussi une autre table liée TABLEAU2 (TABLE VOISINS) avec des colonnes

LeaveID (PK)
StaffID (FK)
StartDate

Ce que je veux faire est d'écrire une requête T-SQL pour mettre à jour la colonne StartDate de toutes les lignes TABLEAU2 dont CategoryID dans le tableau 1 = '3'

TABLEAU2 est lié à la table1 via la colonne de clé étrangère StaffID

Répondre

2

Vous pouvez utiliser une jointure dans la déclaration de mise à jour, mais pour des mises à jour simples comme celui-ci, je pense que la façon la plus claire est d'utiliser un sous-requête. Cela évite toute ambiguïté quant à la mise à jour de la table et l'optimiseur choisira probablement le même plan de requête.

update TABLE2 
set StartDate = @SomeDate 
where StaffId in (select StaffId from TABLE1 
        where CategoryID = 3) 
+0

Paul Spangle - merci. – StackTrace

2
UPDATE TABLE2 T2 
     SET T2.StartDate = '10/10/2010' // YOUR NEW DATE 
INNER JOIN TABLE1 T1 ON T1.StaffID = T2.StaffID 
    WHERE T1.CategoryID = 3