У меня 2 таблицы и одну вложенную таблицу:Oracle SQL - объединить таблицу с вложенной таблицы в колонке
1.stores данных о продуктах, которые включают в себя следующие столбцы:
ITEM - product id(key)
STORE - store id(key)
PRICE
NORMAL_PRICE
DISCOUNTS - nested table with info about discounts include columns:
PromotionId(key)
PromotionDescription
PromotionEndDate
MinQty
DiscountedPrice
DiscountedPricePerMida
2- временную таблицу с новыми скидки включают столбцы:
PROMOTIONID(key)
PRODUCTID(key)
PROMOTIONDESCRIPTION
PROMOTIONENDDATE
MINQTY
DISCOUNTEDPRICE
DISCOUNTEDPRICEPERMIDA
Что мне нужно сделать, является объединить таблицу 2 в таблице 1 - если совпадение не вставить еще игнорировать (если матч: соответствие идентификатор продукта в таблице 1 и 2, и для этого продукта к югу матч таблицы PROMOTIONID PROMOTIONID из таблицы 2)
Это где я до сих пор и у меня есть трудности с вложенной частью - на п и вставить Пункт
MERGE INTO PRICES P
USING(SELECT * FROM TMP_PROMO)T
ON(P.ITEM=T.PRODUCTID AND P.STORE=50 AND P.DISCOUNTS.PROMOTIONID=T.PROMOTIONID)
WHEN NOT MATCHED THEN INSERT (P.DISCOUNTS)
VALUES(T.PROMOTIONID,
T.PROMOTIONDESCRIPTION,
T.PROMOTIONENDDATE,
T.MINQTY,
T.DISCOUNTEDPRICE,
T.DISCOUNTEDPRICEPERMIDA);
Я знаю, что это неправильно, но я нигде не могу найти, как это сделать
пример: Цены таблице:
row1 (1,50, ..., nested_table [(11, ...), (12 , ...)])
row2 (2,50, ..., nested_table [(10, ...), (12, ...)])
новый промо-стол:
(15,1, .. .)
(11,1, ...)
новый промо с идентификатором 15 будет добавлено в row1 и row2
и промо с идентификатором 11 не будет добавлен
Пожалуйста, помогите , спасибо
Просто отключите вложенную таблицу, используя такой запрос: 'SELECT ITEM, x. * FROM table1 t1, TABLE (t1.DISCOUNTS) x' и использовать его как подзапрос в инструкции MERGE, как и любой другой обычный запрос. – krokodilko