0

My update query Sql Server as follows:

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')

what is equivalent Oracle query.My try as follows:

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'

But gives me error cannot modify a column which maps to a non key-preserved table.Sql server works fine.

decoder
  • 886
  • 22
  • 46

1 Answers1

1

You just need 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 
             );
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786