Имам две таблици, които искам да използвам в моята заявка, tblEmployee
и tblEmpPerformance
Изискването е:
Използвайки tblEmployee.EmpID, tblEmployee.ManagerID
, преминете през tblEmpPerformance
и погледнете tblEmpPerformance.SalaryRaise
и tblEmpPerformance.CommissionRaise
и съответно актуализирайте tblEmployee
.
Само едно от тези две полета ще има ненулева стойност за всеки запис в tblEmpPerformance
if tblEmployee.EmpID = tblEmpPerformance.EmpID then
If tblEmpPerformance.Salary > 0 then
update tblEmployee
Set CompensationType = 'Salary'
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
update tblEmployee
Set SalaryRaise = tblEmpPerformance.SalaryRaise
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
If tblEmpPerformance.Commission > 0 then
update tblEmployee
Set CompensationType = 'Commission'
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
update tblEmployee
Set CommissionRaise = tblEmpPerformance.CommissionRaise
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
Ако не са намерени съответстващи EmpID
, тогава погледнете в tblContractorPerformance
if tblEmployee.EmpID = tblContractorPerformance.EmpID then
If tblContractorPerformance.Salary > 0 then
update tblEmployee
Set CompensationType = 'Salary'
Where tblEmployee.EmpID = tblContractorPerformance.EmpID
AND tblEmployee.ManagerID = tblContractorPerformance.ManagerID
....
....
....
....
Next tblEmployee.EmpID
Актуализация: DOH!!.. Какъв би бил най-добрият начин да напишете тази SQL заявка. Съхранен процес или курсор? Всяко предложение за това как да проектирате заявката също би било от голяма помощ