2017-07-06 5 views
0

Meine Update-Abfrage SQL Server wie folgt:SQL Server-Äquivalent Join Update Oracle

Update Project set Name=Project.Name+' assignedTo ' 
FROM Project 
INNER JOIN EmployeeProject ON Project.ID = EmployeeProject.ProjectID 
INNER JOIN Employee ON EmployeeProject.EmployeeID = Employee.ID 
WHERE (Employee.Name = N'Minion') 

was äquivalent Oracle query.My ist versuchen, wie folgt:

Update (SELECT Project.Name as ProjectName,Employee.Name as EmpName 
     FROM Project 
     INNER JOIN EmployeeProject ON Project.ID = EmployeeProject.ProjectID 
     INNER JOIN Employee ON EmployeeProject.EmployeeID = Employee.ID 
     where Employee.Name=N'Minion' 
     ) T 
set T.ProjectName=' somting' 

Aber gibt mir Fehler kann keine Spalte ändern was zu einer nicht Schlüssel-konservierten Tabelle zugeordnet. Sql-Server funktioniert gut.

+0

@ a_horse_with_no_name können Sie eher eine Antwort hinterlassen – decoder

Antwort

1

Sie müssen nur exists:

update Project p 
    set Name = p.Name+' assignedTo ' 
where exists (select 1 
       from EmployeeProject join 
        Employee e 
        on ep.EmployeeID = e.ID 
       where e.Name = N'Minion' and p.ID = ep.ProjectID 
      );