2014-07-14 35 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