Я пытаюсь написать скрипт, который включает в себя запрос Oracle, чтобы обновить запланированную дату завершения проекта до пересмотренной даты окончания, которая была отправлена через запрос на изменение, но дата не обновляется при запуске скрипта.
Я не уверен, является ли это проблемой с моим запросом или чем-то еще. Прежде чем я углублюсь, этот запрос выглядит так, как будто он должен работать? (В настоящее время я не могу проверить запрос к самой базе данных.)
UPDATE Project pr
SET pr.ScheduledFinish = (SELECT ch.RevisedEndDate
FROM Change ch
JOIN ChangeRequests cr ON cr.ID = ch.ID
JOIN RisksAndIssues ri ON ri.ID = cr.ID
JOIN Project pr ON pr.ID = ri.PK_ID
WHERE pr.ID = ?)
WHERE pr.ID = (SELECT ID
FROM Change ch
WHERE ch.ID = ?)
Примечание:? в запросе есть переменная связывания, которая будет принимать значение записи, над которой в данный момент работает. то есть. Если запрос на изменение, для которого выполняется запрос, имеет идентификатор 1214, то? будет 1214 после запуска сценария.
Заранее спасибо.
Обновление:
Я считаю, что это правильная логика:
UPDATE Project pr
SET pr.ScheduledFinish = (SELECT ch.RevisedEndDate
FROM Change ch
JOIN ChangeRequests cr ON cr.ID = ch.ID
JOIN RisksAndIssues ri ON ri.ID = cr.ID
JOIN Project pr ON pr.ID = ri.PK_ID
WHERE pr.ID = ?)
WHERE pr.ID = (SELECT ID
FROM RisksAndIssues ri
JOIN ChangeRequests cr ON cr.ID = ri.ID
JOIN Change ch ON ch.ID = cr.ID
JOIN Project pr ON pr.ID = ri.PK_ID
WHERE pr.ID = ?)
Гордон, ты был прав. Я пытался сопоставить идентификатор изменения с идентификатором проекта, но они не коррелируют. Таким образом, этот новый подвыбор в предложении WHERE обновления должен исправить проблему связывания.