2014-07-14 79 views
0

我想更新一個表格,這個表格有多對一的關係。該表包含可以很多的會員資格,並且它們與一個人聯繫在一起。帶左連接的SQL Server UPDATE?

會員可以是客戶或從業者,所以他們有一個客戶ID或從業者ID。

請問你是否需要更多信息,下面是我的嘗試,我嘗試了UPDATE下的所有左連接,並且沒有從,但是我已經發布了這個例子,因爲我認爲它最好顯示我是什麼試圖去做。

UPDATE 
    MembershipUser AS MU 
SET 
    MU.AccountLastUsed = 0 
FROM 
    Person AS P 
    LEFT JOIN Practitioner AS Pr ON Pr.PersonId = P.PersonId 
    LEFT JOIN Client AS C ON C.PersonId = P.PersonId 
    LEFT JOIN MembershipUser AS MU ON MU.PractitonerId = Pr.PractitionerId OR ON MU.ClientId = C.ClientId 
WHERE 
    P.PersonId = @PersonId 

有人可以幫我在這裏,你可以做一個更新與左加入?

+0

爲什麼ü使用變量嗎? – Azar

+0

沒有「OR ON」結構;這將是一個解析錯誤。 – user2864740

回答

1

嘗試以下查詢:

UPDATE MembershipUser 
SET MU.AccountLastUsed = 0 
FROM Person AS P 
    LEFT JOIN Practitioner AS Pr ON Pr.PersonId = P.PersonId 
    LEFT JOIN Client AS C ON C.PersonId = P.PersonId 
Where 
    P.PersonId = @PersonId 
    and (MembershipUser.PractitonerId = Pr.PractitionerId OR MembershipUser.ClientId = C.ClientId) 

OR:

UPDATE z  
SET AccountLastUsed = 0 
FROM (
    SELECT Mu.Id, Mu.AccountLastUsed 
    FROM 
     Person AS P 
     LEFT JOIN Practitioner AS Pr ON Pr.PersonId = P.PersonId 
     LEFT JOIN Client AS C ON C.PersonId = P.PersonId 
     LEFT JOIN MembershipUser AS MU ON MU.PractitonerId = Pr.PractitionerId OR ON MU.ClientId = C.ClientId 
    WHERE 
     P.PersonId = @PersonId 
    )z 
+0

@mehdi lotfi謝謝頂級人工作。 – Pomster