2016-05-09 15 views
1

Ich habe diese Tabellen:TSQL: Wie dieses Feld aktualisieren

Users 
    Id (PK) 
    NationalCode 

UserProfiles 
    UserProfileId (PK) One to One with Users 
    SalaryAmount 

Salaries 
    NationalCode 
    SalaryAmount 

I SalaryAmount für jeden Benutzer innerhalb UserProfiles mit neuen Gehalts- aktualisieren möchten. Wie kann ich das machen?

Ich habe dies versucht:

UPDATE Users 
SET SalaryAmount = t2.Salary 
FROM Users t1 
INNER JOIN Salaries t2 ON t1.NationalCode = t2.NationalCode 
GO 

Der obige Code funktioniert, wenn SalaryAmount innerhalb Users sein, aber wie Sie SalaryAmount ist UserProfiles innen sehen können.

+0

dann 'beitreten Benutzer' mit 'UserProfiles' statt – Lamak

+0

@Lamak Sie bedeuten etwas wie das? 'UPDATE Userprofiles SET SalaryAmount = t2.Salary FROM t1 Userprofiles INNER Benutzer T3 t1.UserProfileId = t3.Id JOIN INNER Sheet1 $ t2 JOIN ON t3.NationalCode = t2.Nationalcode GO' – newbie

Antwort

0

Alles was Sie brauchen eine andere auf `Userprofiles verbinden ist:

UPDATE up 
SET up.SalaryAmount = s.Salary 
FROM UsersProfiles up 
JOIN Users u on up.UserProfileId = u.Id 
JOIN Salaries s ON u.NationalCode = s.NationalCode 
0
UPDATE up 
SET up.SalaryAmount = t2.Salary 
FROM UserProfiles up 
INNER JOIN Users t1 ON t1.Id = up.UserProfileId 
INNER JOIN Salaries t2 ON t1.NationalCode = t2.NationalCode 
GO 

Ist das, was Sie brauchen? Ich würde Ihnen empfehlen UserProfileId Spalte zu machen in der Tabelle eindeutig sein UserProfiles und einzigartige IDs speichern Benutzer in Spalte UserId die eine Foreign Key für Tisch ist Users

0
UPDATE U 
SET U.SalaryAmount = S.SalaryAmount 
FROM 
    Userprofiles U 
    INNER JOIN Users R ON U.UserprofileID = R.ID 
    INNER JOIN Salaries S ON R.NationalCode = S.NationalCode 
WHERE 
    U.SalaryAmount <> S.SalaryAmount 
+0

Bitte fügen Sie eine Erklärung als Warum behebt dies das Problem des Fragestellers, anstatt nur ein Codebeispiel, um ihnen zu helfen, es zu verstehen. – AlBlue