Вставка нескольких строк в компанию - Параметр - Таблица значений - PullRequest
1 голос
/ 08 марта 2012

Хорошо, допустим, у меня есть база данных с таблицей с именем «COMPANY_PARAMETERS», которая выглядит примерно так (первые два столбца являются ключами):

COMP_ID | PARAM_NAME | PARAM_VALUE
   A    | parameter 1| 10
   A    | sample_ind | Y
   B    | parameter 1| 20
   B    | sample_ind | N

Я хотел бы вставить новый параметр, скажем, параметр 2 в таблицу, для каждого идентификатора компании в таблице. Я не знаю, какую Id компанию ожидать, поскольку у любого клиента может быть любой ID компании, который он хочет, поэтому у одного клиента могут быть Id 1,2,3,4, а у другого - A, B, C, D и т. Д. Мы используйте серию скриптов обновления, которые мы храним в репозитории каждый раз, когда обновляем базу данных. Я спрашивал вокруг, и это одна из редких (только) таблиц, которая просто уникальна для каждого клиента, но я все равно хотел бы попробовать.

Я работаю с базами данных менее года, и я не знаю, с чего начать с такой проблемой. Я полагаю, что использовать оператор select, чтобы найти все уникальные comp_Ids, а затем вставить строку для каждого из них.

Ваша помощь очень ценится.

-Asaf

1 Ответ

1 голос
/ 08 марта 2012
INSERT INTO COMPANY_PARAMETERS
    (COMP_ID, PARAM_NAME)
    SELECT DISTINCT cp.COMP_ID, 'parameter 2'
        FROM COMPANY_PARAMETERS cp;

Если вы хотите быть очень осторожным, вы можете расширить запрос, чтобы убедиться, что новый параметр еще не существует.

INSERT INTO COMPANY_PARAMETERS
    (COMP_ID, PARAM_NAME)
    SELECT DISTINCT cp.COMP_ID, 'parameter 2'
        FROM COMPANY_PARAMETERS cp
        WHERE NOT EXISTS(SELECT 1
                             FROM COMPANY_PARAMETERS cp2
                             WHERE cp2.COMP_ID = cp.COMP_ID
                                 AND cp2.PARAM_NAME = 'parameter 2');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...