Возникли проблемы при использовании обновления и вставки запроса в сценарии SQL - PullRequest
0 голосов
/ 13 июня 2018

Мне дали пример вопроса SQL для предстоящего технического интервью.У меня проблемы с пониманием того, как подойти / объяснить решение этого вопроса.

У клиента есть контракт, который начался 4/4/2018 и заканчивается 01.01.2029.Клиент подписывает продолжение с измененными условиями, которое начинается 2/10/2024 и заканчивается 11.11.2045.Напишите запросы, необходимые для обновления старого контракта, и вставьте новый контракт.

Могу ли я создать простые таблицы БД, содержащие примеры записей, таких как: clientID, contract, cStartDate, cEndDate

А потом писать INSERT INTO и UPDATE запросы?Или они ищут здесь что-то другое?

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

возможно, вы можете создать таблицу с полями contractID, clientID, cStartDate, cEndDate, notes, status

Таким образом, вы можете просто вставить новую информацию о контракте в таблицу и обновить поле статуса, чтобытекущий, активный контракт имеет уникальный статус, например, 0 -> архивированный, 1 -> активный и т. д.

Или, если вы предпочитаете, чтобы исторические данные вам не нужны, вы можете опустить статусполе и просто обновите дату начала и окончания, используя clientID и contractID (если у клиента несколько контрактов)

0 голосов
/ 13 июня 2018

Вы не можете осмысленно ответить на этот вопрос, не зная соответствующих определений таблиц, предикатов relvar и бизнес-правил.Там не достаточно информации.Вы можете угадывать и делать предположения (то есть определять свои собственные таблицы и правила), но если в этом суть вопроса, то это следовало бы сказать так.

0 голосов
/ 13 июня 2018

Я думаю, что вы ищете такой запрос,

Обновить таблицу ->

UPDATE <YOUR_CONTRACT_TABLE> 
SET cStartDate = '2-10-2024', cEndDate= '11-11-2045'
WHERE id=<YOUR_CONTRACT_ID> ;

Вставить в таблицу ->

INSERT INTO <YOUR_CONTRACT_TABLE> (id,clientID, contract, cStartDate, cEndDate)
VALUES (<YOUR_CONTRACT_ID>,<YOUR_CLIENT_ID>, <YOUR_CONTRACT_NAME>, '3-3-2026', '11-11-2039');
...