Вставить или связать записи, основанные на существовании в чужой таблице - PullRequest
0 голосов
/ 25 февраля 2012

Нет никакого реального способа для меня кратко резюмировать это.У меня есть две таблицы базы данных (PostgreSQL 9.x)

Первая содержит, например, Продукты.У каждого продукта есть имя и уникальный идентификатор.

Вторая таблица содержит записи о продажах и содержит название каждого проданного продукта, но не идентификатор.Я хочу обновить эту таблицу с помощью «product_id» соответствующей уникальной записи в таблице «Продукты».Однако иногда имена продуктов отображаются в таблице «Продажи», которых нет в таблице «Продукты».Когда я нахожу один из них, я хочу добавить запись о продукте в таблицу «Продукты», а затем обновить записи о продажах для этого названия продукта новым внешним ключом product_id.

У меня есть несколько SQL, которые делаютпервая часть: обновляет запись продаж с product_id, который соответствует уникальному имени в таблице Products.Мне просто нужно знать, как сначала найти в таблице продаж неизвестные названия продуктов и создать их в таблице продуктов.

1 Ответ

1 голос
/ 25 февраля 2012

Примерно так:

-- add any products not in products table
INSERT INTO Products(ProductName)
SELECT DISTINCT S.ProductName
FROM Sales AS S
WHERE NOT EXISTS(
    SELECT * 
    FROM Products AS P
    WHERE P.ProductName = S.ProductName
);

-- now just do update 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...