У меня есть две таблицы в базе данных, как показано на скриншоте.Как обновить информацию в другой таблице?
Есть некоторые общие столбцы значения, присутствующие в tbCompanyAgent, как и в tbLicence как LicenseNumber, LicenseIssueDate и LicenseExpirationDate. После некоторых сложных запросов sql и бизнес-требований столбцы StateIssuedLicenseNumber, StateIssuedLicenseIssueDate и StatedIssuedLicenseExpirationDate и столбцы LicenceNumber, DateIssued и ExpirationDate в tbLicence объединены в один столбец LicenseNumber, LicenseIssueDate и LicenseExpirationDate в tbCompanyAgent.
Также значения в StateIssuedLicenseNumber, StateIssuedLicenseIssueDate и StatedIssuedLicenseExpirationDate одинаковы для той же группы записей, идентифицированных идентификатором Column LicenceType.
На самом деле существует одна резидентная запись для всех лицензий, которые хранятся в столбцах StateIssuedLicenseNumber, StateIssuedLicenseIssueDate и StatedIssuedLicenseExpirationDate и идентифицируются столбцом Resident с 1 значением.
Лицензии не резидентов хранятся в LicenceNumber, DateIssued и ExpirationDate с 0 значением.
Мой вопрос: если пользователь пытается внести некоторые изменения в tbLicence, которые должны быть отражены на tbCompanyAgent. Для этого я написал процедуру, подобную приведенным ниже строкам кода.
ALTER proc [dbo].[prCompanyAgentUpdate]
(
@NewLicenceNumber nvarchar(50),
@NewDateIssued datetime,
@NewExpirationDate datetime,
@LicenceNumber nvarchar(50),
@DateIssued datetime,
@ExpirationDate datetime,
@StateIssuedLicenceNumber nvarchar(50),
@StateIssuedDateIssued datetime,
@StateIssuedExpirationDate datetime
)
as
Declare @CDateIssued datetime;
Declare @CExpirationDate datetime;
Declare @CStateIssuedDateIssued datetime;
Declare @CStateIssuedExpirationDate datetime;
Set @CDateIssued= CONVERT(char(10),@DateIssued, 126);
Set @CExpirationDate= CONVERT(char(10), @CExpirationDate, 126);
Set @CStateIssuedDateIssued= CONVERT(char(10), @StateIssuedDateIssued, 126);
Set @CStateIssuedExpirationDate= CONVERT(char(10), @StateIssuedExpirationDate, 126);
UPDATE [tbCompanyAgent]
SET
LicenceNumber = @NewLicenceNumber,
LicenceIssueDate = @NewDateIssued,
LicenceExpirationDate [email protected]
WHERE
LicenceNumber in (select distinct LicenceNumber
from tbLicence where LicenceNumber= @LicenceNumber AND StateIssuedLicenseNumber= @StateIssuedLicenceNumber
AND LicenceIssueDate = @CDateIssued AND StateIssuedLicenseIssuedDate = @CStateIssuedDateIssued AND
StateIssuedLicenseExpirationDate = @CStateIssuedExpirationDate)
Это не обновление информации в tbCompanyAgent. Пожалуйста, помогите мне !!!
Создайте еще одну таблицу и пусть обе таблицы ссылаются на эти общие столбцы оттуда на основе идентификатора. ** ЕСЛИ ** нормализация не является проблемой, а ваши данные составляют менее 10 миллионов строк или что-то еще. –
Я не могу этого сделать, потому что мне потребуется возраст, чтобы сделать это из-за сложного характера требований бизнеса ... – Nida